編譯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: " ;
}