關(guān)鍵字:boost 編譯 安裝
boost編譯。沒啥新東西,老生常談。
先給出英文的編譯幫助,有什么不明白的或者我沒說清楚的請查閱并確認(rèn)。
www.boost.org/more/getting_started.html
或者你的boost的安裝路徑下的more/getting_started.html
這里以1.33.1為例。
1.下載boost包,并解壓到某個(gè)文件夾下。這里用為方面起見$boost_dir代替,在說明路徑的地方如果出現(xiàn)了$boost_dir請用實(shí)際的boost的解壓路徑替代。
注:如果你下載了boost的一些增補(bǔ)包,這些包一般是在boost從上一個(gè)大版本到新大版本之前被收錄的一些新的庫或者是新的編譯工具,例如新的bjam。請不要以為是重名而把同名文件夾覆蓋了。看準(zhǔn)合適位置解壓就是了。
2.打開命令行工具。以下的主要工作都將在命令行中進(jìn)行。
3.首先是編譯jam工具。
?3.1 使用命令行
??SET PATH=%PATH%;$boost_dir\tools\build\jam_src\;
?設(shè)置環(huán)境變量。這一步也可以在“我的電腦點(diǎn)右鍵->屬性->高級->環(huán)境變量->user variable或system variable中"設(shè)置,而且是永久性的。使用set設(shè)置的環(huán)境變量只對當(dāng)前命令行有效。
?3.2 ?運(yùn)行build.bat。在命令行中查看結(jié)果。如果結(jié)果顯示“update 1 targets successful"這樣的信息,則表明編譯成功。此時(shí)“$boost_dir\tools\build\jam_src\”文件夾可發(fā)現(xiàn)一個(gè)新的文件夾btn.x86,在里面可以發(fā)現(xiàn)bjam.exe。(不知道會不會有btn.x64文件夾。。。我是X86的機(jī)器,不太清楚)
??將這個(gè)文件夾也添加到環(huán)境變量中。
??SET PATH=%PATH%;$boost_dir\tools\build\jam_src\btn.x86;
?3.3?如果沒能成功編譯bjam,則可能是編譯器的設(shè)置問題。對于Visual C++(2005Express有點(diǎn)特殊)編譯器,找到common7\tools\vcvars32.bat,把它拖到命令行窗口中,運(yùn)行一下,然后再執(zhí)行build.bat。對于2005 Express,這個(gè)編譯器攜帶的是精簡的編譯環(huán)境,你可以同樣找到vcvars.txt,然后更名為vcvars.bat,按照剛才的方式執(zhí)行一邊即可。
4.bjam編譯好后,就可以利用它編譯庫文件了。將命令行的工作目錄放置到$boost_dir下,然后執(zhí)行一下bjam --help,看能否正確的執(zhí)行bjam.exe。如果提示找不到文件,將bjam所在的路徑添加到環(huán)境變量path中,實(shí)在不行就把bjam復(fù)制到$boost_dir下。
5.如果試圖使用boost.python庫,則需要添加安裝python,并設(shè)置對應(yīng)的環(huán)境變量,這里的root對應(yīng)的是你的python的安裝路徑,ver對應(yīng)的是你的python版本。
SET PYTHON_ROOT=X:\Python2.3.4
SET PYTHON_VERSION=2.3
6.如果使用了boost.iostreams的compress或者unicode功能,請參閱對應(yīng)的提示。通常你需要zlib和icu這兩個(gè)庫。
7.編譯選項(xiàng):
選項(xiàng)參見$boost_dir\more\getting_started.html,這里有詳細(xì)的說明,以下僅列舉一個(gè)很具代表性的選項(xiàng)。
bjam -sBOOST_ROOT=. -sTOOLS=vc-7_1 --with-thread "-sBUILD=debug release <runtime-link>static/dynamic"
上面的命令行設(shè)置環(huán)境變量BOOST_ROOT為當(dāng)前路徑,使用Visual C++ 7.1編譯器,僅編譯thread庫(因?yàn)橥暾木幾g耗時(shí)很長,所以建議使用--with-<library_name>來編譯指定庫。類似的還有--without-<library_name>選項(xiàng))。
編譯好的庫都在$boost_dir\bin下。你可以進(jìn)去搜索所有的lib/dll文件然后剪切出來放到一個(gè)文件夾中,再把其他的中間文件刪掉就好了。
類似的你還可以編譯其他的類庫,具體的庫可能需要依賴一些其他的庫,你可以參見庫的編譯說明。另外生成的庫運(yùn)行時(shí)鏈接情況也是不一樣的,例如有的庫不能支持靜態(tài)鏈接。這一點(diǎn)請?jiān)敿?xì)閱讀幫助文件。
8.使用:
這里可能不太好舉例。先將$boost_dir加入到編譯器的include目錄列表中。然后我編譯好了thread庫,并且將所有的相關(guān)文件都統(tǒng)一放置到了$boost_dir\bin\thread\目錄下,我便可以在我的工程中將該目錄添加到鏈接文件的路徑中。然后依據(jù)情況選擇是否手工添加庫文件。在幫助的“Automatic Linking on Windows”一節(jié),文檔說,很多需要編譯的庫,boost都使用了#pragma指示字指明了庫名稱,也就是說只需要加上庫所在的路徑就好了。
最后是關(guān)于運(yùn)行時(shí)庫的問題。最好把你的工程選用的CRT與編譯boost庫時(shí)使用的CRT一致起來。這一點(diǎn)可以根據(jù)boost文件的名稱判斷。否則的話可能會出現(xiàn)內(nèi)存的使用錯(cuò)誤(尤其是分配和釋放不在一個(gè)堆的時(shí)候更是如此)。
最后是一篇中文文檔。這篇也不錯(cuò)。如果不清楚,E文也不是太好的可以參看它
http://blog.csdn.net/billdavid/archive/2005/03/07/313347.aspx