编译安装 log4cxx 的 SVN 版本

下面的文章由 anileci@newsmth 编写,我适当修改了小部分内容。编译过程还算顺利,但在自己的测试程序中使用还有些问题,动态链接基本正常,静态链接则会碰到一些奇怪的链接错误(VC6 还没搞定,VC7 正常),还有就是原来在 0.9.7 中好用的 RollingFileAppender,现在不会自动 roll 了,不清楚是不是配置文件的定义和以前不太一样了。
编译安装log4cxx0.10.0[SVN REV:465428]的方法
修改自 Rainny@newsmth (瑞霓山主·水木遗少) 给我的说明。
系统预装了jdk 1.5.0_08,VS 2005,TortoiseSVN 1.4.0。
1. 取得log4cxx的源代码
a) 在windows explorer窗口点右键,选择”SVN Checkout…”,弹出对话框,”URL of repository” 填 “http://svn.apache.org/repos/asf/logging/log4cxx/trunk“,”Checkout directory” 填 “d:Buildlog4cxx”,点OK即可。
2. 编译
a) 取得Ant: 至http://ant-contrib.sourceforge.net,下载最新版的cpptasks和ant-contrib,分别解压到d:cpptasks和d:ant-contrib
b) 打开Command Prompt
c) set CLASSPATH= %CLASSPATH%;d:cpptaskscpptasks.jar;d:ant-contriblibant-contrib.jar
d) call “%VS80COMNTOOLS%vsvars32.bat” ,如果是VS2003则改为 call “%VS71COMNTOOLS%vsvars32.bat”,如果是VS6则到VC98Bin下面找
e) cd d:Buildlog4cxx
f) 生成log4cxx库的命令:(要查看更多的build选项请运行d:apache-antbinant.bat usage)
i.Debug静态库
d:apache-antbinant.bat build -Ddebug=true -Dlib.type=static -Dhas.wchar_t=0
ii.Debug动态库
d:apache-antbinant.bat build -Ddebug=true -Dlib.type=shared -Dhas.wchar_t=0
iii.Release静态库
d:apache-antbinant.bat build -Ddebug=false -Dlib.type=static -Dhas.wchar_t=0
iv.Release动态库
d:apache-antbinant.bat build -Ddebug=false -Dlib.type=shared -Dhas.wchar_t=0
3. 使用
a) 在IDE的包含目录中添加d:buildlog4cxxinclude
b) 在项目属性中链接目录根据需要添加
D:Buildlog4cxxbuilddebugstatic
D:Buildlog4cxxbuilddebugshared
D:Buildlog4cxxbuildreleasestatic
D:Buildlog4cxxbuildreleaseshared
4. 脚本自动安装方法
a) 在 “D:Buildlog4cxx” 目录下建立distribute_libs.bat 内容如下:
————-begin
@echo off
echo Copying Debug shared dll libs…
copy builddebugsharedlog4cxxd.dll liblog4cxxd.dll /Y
copy builddebugsharedlog4cxxd.lib liblog4cxxd.lib /Y
REM Debug static
echo Copying Debug static libs…
copy builddebugstaticlog4cxxd.lib liblog4cxxSd.lib /Y
copy builddebugstaticapr-1d.lib libapr-1Sd.lib /Y
copy builddebugstaticaprutil-1d.lib libaprutil-1Sd.lib /Y
REM Release shared dll
echo Copying Release shared dll libs…
copy buildreleasesharedlog4cxx.dll liblog4cxx.dll /Y
copy buildreleasesharedlog4cxx.lib liblog4cxx.lib /Y
REM Release static
echo Copying Release static libs…
copy buildreleasestaticlog4cxx.lib liblog4cxxS.lib /Y
copy buildreleasestaticapr-1.lib libapr-1S.lib /Y
copy buildreleasestaticaprutil-1.lib libaprutil-1S.lib /Y
———end of distribute_libs.bat
这样把所有有用的lib和dll放在log4cxx的lib目录下,并改成与类型对应的名字,在项目中就可以直接将链接目录指向lib,链接的库也可以用#pragma写到头文件中:
#ifdef LOG4CXX_STATIC
# ifdef _DEBUG
#  pragma comment(lib, “log4cxxSd.lib”)
#  pragma comment(lib, “apr-1Sd.lib”)
#  pragma comment(lib, “aprutil-1Sd.lib”)
#  pragma comment(lib, “ws2_32.lib”)
#  pragma comment(lib, “Mswsock.lib”)
# else
#  pragma comment(lib, “log4cxxS.lib”)
#  pragma comment(lib, “apr-1S.lib”)
#  pragma comment(lib, “aprutil-1S.lib”)
#  pragma comment(lib, “ws2_32.lib”)
#  pragma comment(lib, “Mswsock.lib”)
# endif
#else
# ifdef _DEBUG
#  pragma comment(lib, “log4cxxd.lib”)
# else
#  pragma comment(lib, “log4cxx.lib”)
# endif
#endif
update:一直到 07 年 7 月的 SVN 代码,我都可以用上面的方法正确编译,我手头相关软件的版本分别是:ant 1.6.5 ant-contrib 1.0b2 cpptasks 1.0b4 apr 1.2.7 apr-util 1.2.7 cppunit 1.10.2。之后一直到 0.10.0 的 rc2 出来之前,我都没有从服务器上同步过代码,够用就好:)
This entry was posted in 软件开发 and tagged , . Bookmark the permalink.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s