**:
生成檔案命名規則:boost中有許多庫,有的庫需要編譯、而有的庫不需要編譯,只需包含標頭檔案就可以使用。編譯生成的檔案名字普遍較長,同乙個庫根據編譯鏈結選項不同,又可以生成多個不同名字的檔案。生成的檔案名字是很長,可是這樣帶的資訊才多,也就容易識別出用途。其實生成檔案的名字遵循一定的規則,有著固定的格式。識別這種格式,能幫助我們更高效地使用boost庫。生成檔案名字格式如:
boost_lib_prefix + boost_lib_name + "
-" + boost_lib_toolset + "
-" + boost_lib_thread_opt + "
-" + boost_lib_rt_opt + "-" + boost_lib_version
這些定義為:
boost_lib_prefix: 靜態庫為 "lib" (否則無,是用動態鏈結庫)
boost_lib_name: 庫的基本名稱 ( 比方說 boost_regex).
boost_lib_toolset: 編譯工具集名稱 ( 比如:vc6, vc7, bcb5 )
boost_lib_thread_opt: 多執行緒為 "-mt" ,否則為空
boost_lib_rt_opt: 指示使用的執行庫的字尾,
組合下面的乙個或者更多字元:
s 靜態執行庫,指的是靜態鏈結到執行時庫(不出現表示動態).
g 除錯/診斷 runtime (release if not present).
d 除錯版本 (不出現表示 release 版 ).
p stlport 版本.
注:對 vc 來說,gd 總是一起出現
boost_lib_version: boost 版本, boost 版本 x.y 表示為 x_y形式.
編譯:為了簡化
boost
庫的編譯
,boost
庫中帶了乙個用來編譯的工具
,名字是
bjam.exe
或者b2.exe. 1:
執行boost
下的bootstap.bat
指令碼就會自動生上述的兩個編譯工具
,並且拷貝到
boost
目錄下.
也可以進入
tools/build
目錄下找到類似的指令碼或者專案原始碼來編譯.
2: bjam.exe
的引數
feature
allowed values
notes
variant
debug,release
link
shared,static
determines if boost.build creates shared or static libraries
threading
single,multi
cause the produced binaries to be thread-safe. this requires proper support in the source code itself.
address-model
32,64
toolset
(depends on configuration)
the c++ compiler to use. see the section called 「c++ compilers」 for a detailed list.
(vs2008)
msvc-8.0
(vs2010)msvc-10.0
include
(arbitrary string)
additional include paths for c and c++ compilers.
define
(arbitrary string)
additional macro definitions for c and c++ compilers. the string should be either symbol or symbol=value
cxxflags
(arbitrary string)
custom options to pass to the c++ compiler.
cflags
(arbitrary string)
custom options to pass to the c compiler.
linkflags
(arbitrary string)
custom options to pass to the c++ linker.
runtime-link
shared,static
determines if shared or static version of c and c++ runtimes should be used.
--build-dir=
編譯的臨時檔案會放在builddir裡(這樣比較好管理,編譯完就可以把它刪除了)
--stagedir=
存放編譯後庫檔案的路徑,預設是stage
--build-type=complete
編譯所有版本,不然只會編譯一小部分版本(確切地說是相當於:variant=release, threading=multi;link=shared|static;runtime-link=shared)
variant=debug|release
決定編譯什麼版本(對應檔案中的d 除錯版本 不出現表示 release 版)
link=static|shared
決定使用靜態庫還是動態庫。(對應檔案中的boost_lib_prefix )
threading=single|multi
決定使用單執行緒還是多執行緒庫。(對應檔案中的boost_lib_thread_opt)
runtime-link=static|shared
決定是靜態還是動態鏈結c/c++標準庫。(對應檔案中的boost_lib_thread_opt)
--with-
只編譯指定的庫,如輸入--with-regex就只編譯regex庫了。
--show-libraries
顯示需要編譯的庫名稱
bjam.exe --toolset=msvc-10.0 --with-date_time runtimelink=static link=static stage
意思是要生靜態庫,該靜態庫靜態鏈結c執行時庫
生成的檔案名字是:libboost_date_time-vc100-mt-sgd-1_48.lib(debug version),libboost_date_time-vc100-mt-s-1_48.lib(release version) 兩個檔案.
bjam.exe --toolset=msvc-10.0 --with-date_time runtimelink=shared link=static stage
意思是要生靜態庫,該靜態庫動態鏈結c執行時庫
生成的檔案名字是:libboost_date_time-vc100-mt-gd-1_48.lib(debug verion),libboost_date_time-vc100-mt-1_48.lib(release version) 兩個檔案.
bjam.exe --toolset=msvc-10.0 --with-date_time runtimelink=shared link=shared stage
意思是要生動態庫,該動態庫動態鏈結c執行時庫
生成的檔案名字是:boost_date_time-vc100-mt-gd-1_48.lib(debug version),boost_date_time-vc100-mt-1_48.lib(release version) 兩個檔案.
生成的dll名字是:boost_date_time-vc100-mt-gd-1_48.dll(debug version),boost_date_time-vc100-mt-1_48.dll(release version)
編譯選項方面還有install等引數.
Boost庫編譯後命名方式
boost官網的 geting started on windows http www.boost.org doc libs 1 38 0 more getting started windows.html 提到了boost庫的命名,摘錄如下 以 libboost regex vc71 mt d 1...
Boost庫編譯後命名方式
from boost官網的 geting started on windows 提到了boost庫的命名,摘錄如下 以 libboost regex vc71 mt d 1 34.lib 為例 下表是對regex庫編譯後的檔名 檔名含義編譯使用該庫的程式時應使用的編譯選項 libboost rege...
Boost庫編譯後命名方式
boost官網的 geting started on windows 提到了boost庫的命名,摘錄如下 以 libboost regex vc71 mt d 1 34.lib 為例 lib 字首 除了microsoft windows之外,每乙個boost庫的名字都以此字串開始。在windows上...