Boost C++ Libraries

PrevUpHomeNext

主要目標規則

主要目標規則(例如「exe」或「lib」)會建立一個頂層目標。您很可能會想要宣告自己的規則,而有兩種方法可以做到這一點。

第一種方法適用於您的目標規則只需要產生特定類型的目標的情況。在這種情況下,已經為您定義了一個規則!當您定義一個新的類型時,Boost.Build 會自動定義一個對應的規則。規則的名稱是從類型的名稱中取得的,方法是將所有字母改為小寫,並將底線取代為連字符。例如,如果您建立一個包含以下內容的模組 obfuscate.jam

import type ;
type.register OBFUSCATED_CPP  : ocpp ;

import generators ;
generators.register-standard obfuscate.file : CPP : OBFUSCATED_CPP ;

並匯入該模組,您就能在 Jamfile 中使用規則「obfuscated-cpp」,它會將原始碼轉換為 OBFUSCATED_CPP 類型。

第二種方法是編寫一個呼叫任何現有規則的包裝器規則。例如,假設每個目錄中只有一個函式庫,並且您希望目錄中的所有 cpp 檔都被編譯到該函式庫中。您可以使用以下方法達到此效果:

lib codegen : [ glob *.cpp ] ;

如果您想讓它更簡單,您可以將以下定義添加到 Jamroot.jam 檔案中:

rule glib ( name : extra-sources * : requirements * )
{
    lib $(name) : [ glob *.cpp ] $(extra-sources) : $(requirements) ;
}

讓您可以將 Jamfile 簡化為:

glib codegen ;

請注意,由於您可以將自訂產生器與目標類型關聯,因此建構的邏輯可能會相當複雜。例如,boostbook 模組宣告了一個目標類型 BOOSTBOOK_MAIN 和一個該類型的自訂產生器。如果您的主要目標規則比較複雜,您可以將其作為範例。


PrevUpHomeNext