两年前曾经编译过 wengophone 开源的softphone项目,在反复的失败与尝试中总算成功。当时是在xp下用的vs2005,boost-1-34, qt-4.1,cmake2.4 。
现如今wengophone已经变换名称为qutecom,boost也到了最新的1.41, qt到了最新版4.6。同时由于公司要上一套系统需要配合softphone一起推广,所以又有了这次的反复尝试编译的经历。经历了4天的失败,昨晚第一个编译后的版本终于是跑起来了,在此记录下失败的过程,也算是给同样受困扰的朋友们些借鉴。
本人最初使用vs2008编译,boost qt 编译都顺利,但在编译qutecom,最后link的时候报错(详细的错误原因没有记录下来),几经尝试都失败,最后变更到vs2005通过。
在xp 英文版下 使用vs2005 sp1 编译通过
软件包:
boost_1_41_0.zip
qt-everywhere-opensource-src-4.6.0.zip
cmake-2.8.0-win32-x86.exe
windows platform sdk
dxsdk_aug2007.exe
nsis-2.46-setup.exe (制作安装包时使用)
qutecom 使用hg做版本管理工具,需要去 http://www.selenic.com/mercurial 下载hg ,然后 从 http://hg.qutecom.org/qutecom-2.2/ 获取最新的2.2版本的源代码。
boost 编译
进入到 boost_1_41_0/tools/jam/src 目录, 运行 build.bat, 首先编译jam工具。将boost_1_41_0/tools/jam/src/bin.ntx86下的 bjam.exe 复制到 boost_1_41_0 目录,
运行 bjam --toolset=msvc-8.0 --build-type=complete link=shared runtime-link=shared threading=multi stage
qt 编译
qt-everywhere-opensource-src-4.6.0 目录下
运行 configure -debug-and-release -qt-style-windowsxp -qt-gif -qt-libpng -qt-libmng -qt-libjpeg -platform win32-msvc2008
运行 nmake
漫长的等待,估计2-3个小时
设置环境变量
BOOSTINCLUDEDIR
D:/work/qutecom/boost_1_41_0
BOOSTLIBDIR
D:/work/qutecom/boost_1_41_0/stage/lib
QTDIR
D:/work/qutecom/qt-everywhere-opensource-src-4.6.0
QTINCLUDEDIR
D:/work/qutecom/qt-everywhere-opensource-src-4.6.0/include
QTLIBDIR
D:/work/qutecom/qt-everywhere-opensource-src-4.6.0/lib
编辑 C:/Program Files/Microsoft Visual Studio 8/Common7/Tools/vsvars32.bat 添加黑体部分(不同的安装路径注意要调整一下)
....
@set PATH=C:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/Bin; C:/Program Files/Microsoft Visual Studio 8/Common7/IDE;C:/Program Files/Microsoft Visual Studio 8/VC/BIN;C:/Program Files/Microsoft Visual Studio 8/Common7/Tools;C:/Program Files/Microsoft Visual Studio 8/Common7/Tools/bin;C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/bin;C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/bin;C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727;C:/Program Files/Microsoft Visual Studio 8/VC/VCPackages;%PATH%
@set INCLUDE=C:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/Include;C:/Program Files/Microsoft DirectX SDK (August 2007)/Include;D:/work/qutecom/boost_1_41_0; C:/Program Files/Microsoft Visual Studio 8/VC/ATLMFC/INCLUDE;C:/Program Files/Microsoft Visual Studio 8/VC/INCLUDE;C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/include;C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/include;%INCLUDE%
@set LIB=C:/Program Files/Microsoft Platform SDK for Windows Server 2003 R2/Lib;D:/work/qutecom/boost_1_41_0/stage/lib; C:/Program Files/Microsoft Visual Studio 8/VC/ATLMFC/LIB;C:/Program Files/Microsoft Visual Studio 8/VC/LIB;C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/lib;C:/Program Files/Microsoft Visual Studio 8/SDK/v2.0/lib;%LIB%
....
重新打开 vs2005 command prompt (一定要关闭重新开配置才会生效。修改了环境变量,cmd窗口也都需要重新开才能生效)
进入到 qutecom-2.2/build 目录
运行 cmake -DCMAKE_BUILD_TYPE=Release -G "NMake Makefiles" .. 注意后面的 ..
(我遇到提示无法找到boost 库,尝试修改了 qutecom-2.2/owbuild/FindBoost.cmake 文件 把 最新的1_41 版本支持加进去就可以了。)
运行 nmake
我遇到的 lang.h 和 yahoo_profile.c 编译出错,我的处理方式是把不需要的语言删掉了,省时省力。
运行 build/release/qutecom.exe 我这报缺少 boost 的一个dll 文件,复制 boost_date_time-vc80-mt-1_41.dll 过去, 解决问题。
以上是我的尝试编译过程,希望对你有用。