編譯boost庫(kù)-用vc2005編譯boost
Posted on 2007-06-05 12:45 morphis 閱讀(2258) 評(píng)論(0) 編輯 收藏 所屬分類: 1. C/Cpp編譯boost庫(kù)-用vc2005編譯boost1.33.1
//打開(kāi)控制臺(tái)窗口,請(qǐng)使用vs2005在開(kāi)始菜單中的“Visual Studio Tools->Visual Studio 2005 命令提示”打開(kāi)控制臺(tái),這樣vc的的編譯環(huán)境就設(shè)置好了。
//假設(shè)boost安裝包的解壓的目錄為{BOOST_SRC}中。
//先編譯出bjam.exe,它被用于安裝boost庫(kù)
cd {BOOST_SRC}\tools\build\jam_src
build.bat
//利用編譯出的bjam.exe程序編譯并安裝boost庫(kù)
cd {BOOST_SRC}
copy {BOOST_SRC}\tools\build\jam_src\bin.ntx86\bjam.exe
//下面的命令的各選項(xiàng)的說(shuō)明:
//prefix 將boost安裝到的路徑(生成的頭文件和庫(kù)文件都會(huì)放到該路徑中)。
//重定義以下變量(利用-s設(shè)置):
//VC80_ROOT vc2005的安裝路徑,如果未將vc2005安裝到默認(rèn)位置,你必須指定該項(xiàng)。
//TOOLS 使用的編譯工具,vc2005對(duì)應(yīng)的是vc-8_0
//PYTHON_ROOT python的安裝目錄,如果未將BOOST安裝到默認(rèn)位置,你必須指定該項(xiàng)。
//BUILD 編譯結(jié)果選項(xiàng),默認(rèn)會(huì)生成盡可能多的版本,如調(diào)試版/發(fā)行版,靜態(tài)庫(kù)/動(dòng)態(tài)庫(kù),單線程/多線程。
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中的編譯出現(xiàn)codepage警告和DEPRECATED函數(shù)的解決近日下載了一個(gè)VC2005 Express Edition,用它來(lái)編譯boost,發(fā)現(xiàn)有不少的warning C4819,說(shuō)代碼文件中有cp936無(wú)法表示的字符,還有就是vc2005特有的廢棄的ANSI函數(shù)的錯(cuò)誤,雖說(shuō)不影響編譯,但是看著時(shí)不時(shí)出現(xiàn)的warning總是讓人心神不安,還容易掩蓋其他的錯(cuò)誤,如果是直接用cl編譯,只要加上/wd4819 /D_CRT_SECURE_NO_DEPRECATE就可以不顯示這兩個(gè)錯(cuò)誤,但是大家都知道boost是使用其特有的boost.build進(jìn)行編譯的,下面我就給出如何修改boost.build來(lái)抑制這兩個(gè)錯(cuò)誤的顯示
boost.build分為v1和v2兩個(gè)版本
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: " ;
}