![]() |
本節包含可在 Jamfile 中使用的所有規則列表,包括定義新目標的規則和輔助規則。
exe
建立可執行檔。請參閱「程式」一節。
lib
建立程式庫檔案。請參閱「程式庫」一節。
install
安裝已建置的目標和其他檔案。請參閱「安裝」一節。
alias
為其他目標建立別名。請參閱「別名」一節。
unit-test
建立將自動執行的可執行檔。請參閱「測試」一節。
compile
、 compile-fail
、 link
、 link-fail
、 run
、 run-fail
專門用於測試的規則。請參閱「測試」一節。
check-target-builds
check-target-builds
允許您根據某些中繼目標是否建置來有條件地使用不同的屬性。這類似於 autotools 專案中 configure 腳本的功能。函數簽章為
rule check-target-builds ( target message ? : true-properties * : false-properties * )
此函數只能在將需求或使用需求傳遞給中繼目標規則時使用。例如,要使應用程式連結到程式庫(如果可用),則必須使用以下內容
exe app : app.cpp : [ check-target-builds has_foo "System has foo" : <library>foo : <define>FOO_MISSING=1 ] ;
另一個例子是,alias 規則可用於整合配置選項,並使其可供其他中繼目標使用,如下所示
alias foobar : : : : [ check-target-builds has_foo "System has foo" : <library>foo : <library>bar ] ;
obj
建立目標檔。當必須使用特殊屬性編譯單個原始程式檔時很有用。
preprocessed
建立預處理的原始程式檔。參數遵循通用語法。
glob
glob
規則接受 shell 模式列表,並返回專案原始程式碼目錄中符合該模式的檔案列表。例如
lib tools : [ glob *.cpp ] ;
也可以傳遞第二個參數——排除模式列表。結果將包含符合任何包含模式且不符合任何排除模式的檔案列表。例如
lib tools : [ glob *.cpp : file_to_exclude.cpp bad*.cpp ] ;
glob-tree
glob-tree
與 glob
類似,不同之處在於它從包含 Jamfile 的目錄遞迴運作。例如
ECHO [ glob-tree *.cpp : .svn ] ;
將會印出專案中所有 C++ 檔案的名稱。.svn
排除模式可防止 glob-tree
規則進入 Subversion 版本控制系統的管理目錄。
project
宣告專案 ID 和屬性,包括專案需求。請參閱「專案」一節。
use-project
將符號專案 ID 指派給指定路徑的專案。此規則需要更完善的說明!
explicit
explicit
規則接受單一參數:目標名稱列表。指定的目標將被標記為顯式,並且只會在命令列中明確請求建置它們,或者它們的依賴項被建置時才會建置。與之相對的是普通目標,它們在包含它們的專案被建置時會被隱式建置。
always
always
函數接受單一參數:元目標名稱列表。由指定的元目標產生的頂層目標將始終被視為過期。考慮以下範例:
exe hello : hello.cpp ; exe bye : bye.cpp ; always hello ;
如果請求建置 hello
,則二進位檔將始終被重新連結。但是,目標檔不會被重新編譯。請注意,如果未請求建置 hello
,例如您僅在命令列中指定 bye
,則 hello
將不會被重新連結。
constant
設定專案範圍的常數。接受兩個參數:變數名稱和值,並使指定的變數名稱可在這個 Jamfile 和任何子 Jamfile 中存取。例如:
constant VERSION : 1.34.0 ;
path-constant
與 constant
相同,但值被視為相對於 Jamfile 位置的路徑。例如,如果在當前目錄中呼叫 b2,並且 helper
子目錄中的 Jamfile 具有:
path-constant DATA : data/a.txt ;
則變數 DATA
將被設定為 helper/data/a.txt
,如果從 helper
目錄呼叫 b2,則變數 DATA
將被設定為 data/a.txt
。
build-project
導致建置其他專案。此規則接受單一參數:相對於包含 Jamfile 的目錄名稱。當包含 Jamfile 被建置時,位於該目錄的專案也將被建置。目前,此規則的參數應該是一個目錄名稱。不允許使用專案 ID 或一般目標參考。
test-suite
此規則已被棄用,等效於 alias
。