Free mind

Be fresh and eager every morning, and tired and satisfied every night.
posts - 39, comments - 2, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

编译boost库-用vc2005编译boost

Posted on 2007-06-05 12:45 morphis 阅读(2239) 评论(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: "  ;
    }


只有注册用户登录后才能发表评论。


网站导航: