boost庫生成檔案命名和編譯

2021-07-25 21:22:38 字數 3982 閱讀 5052

**:

生成檔案命名規則: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上...