![]() |
所有抽象目標的基類。
class abstract-target { rule __init__ ( name : project ) rule name ( ) rule project ( ) rule location ( ) rule full-name ( ) rule generate ( property-set ) }
繼承自 abstract-target 的類別
規則 __init__ ( name : project )
name
目標在 Jamfile 中的名稱。
project
此目標所屬的 專案。
規則 name ( )
傳回此目標的名稱。
規則 project ( )
傳回此目標的 專案。
規則 location ( )
傳回宣告目標的位置。
規則 full-name ( )
傳回此目標方便使用者閱讀的名稱。
規則 generate ( property-set )
使用指定的屬性為此抽象目標產生虛擬目標,除非目標需要不同的特性值。這是一個抽象方法,必須由衍生類別覆寫。
成功時,傳回
如果 property-set
為空,則以衍生類別的特定方式執行此目標的預設建置。
class project-target : abstract-target { rule generate ( property-set ) rule build-dir ( ) rule main-target ( name ) rule has-main-target ( name ) rule find ( id : no-error ? ) # Methods inherited from abstract-target rule name ( ) rule project ( ) rule location ( ) rule full-name ( ) }
此類別具有以下職責
維護此專案中主要目標的清單並建置它們。
規則 generate ( property-set )
覆寫 abstract-target.generate。為此專案中包含的所有目標產生虛擬目標。
成功時,傳回
規則 build-dir ( )
傳回專案的根建置目錄。
規則 main-target ( name )
傳回對應於 name
的 main-target 類別實例。僅在專案完全載入後才能呼叫。
規則 has-main-target ( name )
傳回是否存在指定名稱的 main-target。僅在專案完全載入後才能呼叫。
規則 find ( id : no-error ? )
查找並返回指定 id 的目標,相對於自身處理。Id 可以指定目標或檔案名稱,目標優先。如果找不到目標,則可能會回報錯誤或不返回任何內容,具體取決於 no-error
參數。
class main-target : abstract-target { rule generate ( property-set ) # Methods inherited from abstract-target rule name ( ) rule project ( ) rule location ( ) rule full-name ( ) }
main-target 代表 Jamfile 中一個具名的頂層目標。
規則 generate ( 屬性集 )
覆寫 abstract-target.generate。透過查找所有需求被 屬性集
滿足的替代方案,並選擇需求集最長的一個,來為此主要目標選擇一個替代方案。返回在該替代方案上呼叫 generate 的結果。
成功時,傳回
class basic-target : abstract-target { rule __init__ ( name : project : sources * : requirements * : default-build * : usage-requirements * ) rule generate ( property-set ) rule construct ( name : source-targets * : property-set ) # Methods inherited from abstract-target rule name ( ) rule project ( ) rule location ( ) rule full-name ( ) }
實作了從來源構建主要目標替代方案的最標準方法。允許來源是檔案或其他主要目標,並處理這些依賴目標的生成。
規則 __init__ ( 名稱 : 專案 : 來源 * : 需求 * : 預設建置 * : 使用需求 * )
name
目標的名稱
project
宣告目標的 專案。
規則 generate ( 屬性集 )
覆寫 abstract-target.generate。決定最終建置屬性,生成來源,並呼叫 construct。不應覆寫此方法。
成功時,傳回
規則 construct ( 名稱 : 來源目標 * : 屬性集 )
為此抽象目標構建虛擬目標。返回一個使用需求屬性集和一個虛擬目標列表。應在衍生類別中覆寫。
class typed-target : basic-target { rule __init__ ( name : project : type : sources * : requirements * : default-build * : usage-requirements * ) rule type ( ) rule construct ( name : source-targets * : property-set ) # Methods inherited from abstract-target rule name ( ) rule project ( ) rule location ( ) rule full-name ( ) # Methods inherited from basic-target rule generate ( property-set ) }
typed-target 是最常見的目標替代方案類型。建立類型化目標的規則會針對每種類型自動定義。
規則 __init__ ( 名稱 : 專案 : 類型 : 來源 * : 需求 * : 預設建置 * : 使用需求 * )
規則 type ( )
返回目標的 類型。
規則 construct ( 名稱 : 來源目標 * : 屬性集 )
實作 basic-target.construct。嘗試使用適用於給定 屬性集 的產生器來建立正確類型的目標。返回一個包含使用需求和虛擬目標列表的 屬性集。
此函式由 basic-target.generate 自動呼叫,使用者不應直接呼叫。
用於儲存一組屬性的類別。
class property-set { rule raw ( ) rule str ( ) rule propagated ( ) rule add ( ps ) rule add-raw ( properties * ) rule refine ( ps ) rule get ( feature ) }
身分與值之間存在一對一對應關係。任何兩個類別實例都不相等。為了維持此特性,應使用「property-set.create」規則來建立新的實例。實例是不可變的。