Posted on 2007-06-05 12:45
morphis 阅读(2251)
评论(0) 编辑 收藏 所属分类:
1. C/Cpp
编译boost库-用vc2005编译boost1.33.1
//打开控制台窗口,请使用vs2005在开始菜单中的“Visual Studio Tools->Visual Studio 2005 命令提示”打开控制台,这样vc的的编译环境就设置好了。
//假设boost安装包的解压的目录为{BOOST_SRC}中。
//先编译出bjam.exe,它被用于安装boost库
cd {BOOST_SRC}\tools\build\jam_src
build.bat
//利用编译出的bjam.exe程序编译并安装boost库
cd {BOOST_SRC}
copy {BOOST_SRC}\tools\build\jam_src\bin.ntx86\bjam.exe
//下面的命令的各选项的说明:
//prefix 将boost安装到的路径(生成的头文件和库文件都会放到该路径中)。
//重定义以下变量(利用-s设置):
//VC80_ROOT vc2005的安装路径,如果未将vc2005安装到默认位置,你必须指定该项。
//TOOLS 使用的编译工具,vc2005对应的是vc-8_0
//PYTHON_ROOT python的安装目录,如果未将BOOST安装到默认位置,你必须指定该项。
//BUILD 编译结果选项,默认会生成尽可能多的版本,如调试版/发行版,静态库/动态库,单线程/多线程。
bjam "-sVC80_ROOT=D:\Program Files\Microsoft Visual Studio 8\VC" "-sTOOLS=vc-8_0" "-sPYTHON_ROOT=D:\Program Files\Python24" "--prefix=E:\librarys\boost" install
boost在vc2005中的编译出现codepage警告和DEPRECATED函数的解决近日下载了一个VC2005 Express Edition,用它来编译boost,发现有不少的warning C4819,说代码文件中有cp936无法表示的字符,还有就是vc2005特有的废弃的ANSI函数的错误,虽说不影响编译,但是看着时不时出现的warning总是让人心神不安,还容易掩盖其他的错误,如果是直接用cl编译,只要加上/wd4819 /D_CRT_SECURE_NO_DEPRECATE就可以不显示这两个错误,但是大家都知道boost是使用其特有的boost.build进行编译的,下面我就给出如何修改boost.build来抑制这两个错误的显示
boost.build分为v1和v2两个版本
v1:
修改$(BOOST_ROOT)/tools/build/v1/vc-8_0-tools.jam
将
flags vc - 8_0 C ++ FLAGS : / Zc:forScope ;
改为
flags vc - 8_0 C ++ FLAGS : / Zc:forScope / wd4819 / D_CRT_SECURE_NO_DEPRECATE ;
v2:
cvs版本
修改$(BOOST_ROOT)/tools/build/v2/tools/msvc.jam
在
# 8.0 adds some more options
一行的下方加上
flags msvc.compile CFLAGS $(condition) : / wd4819 / D_CRT_SECURE_NO_DEPRECATE ;
boost 1.33.1版本
将
# 8.0 deprecates some of the options
if ! [ MATCH ^ ([ 67 ]. * ) : $(version) ]
{
flags msvc.compile CFLAGS $(condition) /< optimization > speed : / O2 ;
flags msvc.compile CFLAGS $(condition) /< optimization > space : / O1 ;
flags msvc.link.dll MANIFEST : " mt -manifest " ;
flags msvc.link.dll OUTPUTRESOURCE : " -outputresource: " ;
}
改为:
# 8.0 deprecates some of the options
if ! [ MATCH ^ ([ 67 ]. * ) : $(version) ]
{
flags msvc.compile CFLAGS $(condition) : / wd4819 / D_CRT_SECURE_NO_DEPRECATE ;
flags msvc.compile CFLAGS $(condition) /< optimization > speed : / O2 ;
flags msvc.compile CFLAGS $(condition) /< optimization > space : / O1 ;
flags msvc.link.dll MANIFEST : " mt -manifest " ;
flags msvc.link.dll OUTPUTRESOURCE : " -outputresource: " ;
}