Boost C++ Libraries

PrevUpHomeNext

內建類別

abstract-target 類別
project-target 類別
main-target 類別
basic-target 類別
typed-target 類別
property-set 類別

abstract-target 類別

所有抽象目標的基類。

class abstract-target {
    rule __init__ ( name : project )
    rule name ( )
    rule project ( )
    rule location ( )
    rule full-name ( )
    rule generate ( property-set )
}

繼承自 abstract-target 的類別

  1. 規則 __init__ ( name : project )

    name

    目標在 Jamfile 中的名稱。

    project

    此目標所屬的 專案

  2. 規則 name ( )

    傳回此目標的名稱。

  3. 規則 project ( )

    傳回此目標的 專案

  4. 規則 location ( )

    傳回宣告目標的位置。

  5. 規則 full-name ( )

    傳回此目標方便使用者閱讀的名稱。

  6. 規則 generate ( property-set )

    使用指定的屬性為此抽象目標產生虛擬目標,除非目標需要不同的特性值。這是一個抽象方法,必須由衍生類別覆寫。

    成功時,傳回

    • 一個 property-set,包含要套用於依存項的使用需求
    • 一個產生的虛擬目標清單,該清單可能為空。

    如果 property-set 為空,則以衍生類別的特定方式執行此目標的預設建置。

project-target 類別

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 ( )
}

此類別具有以下職責

  • 維護此專案中主要目標的清單並建置它們。

  1. 規則 generate ( property-set )

    覆寫 abstract-target.generate。為此專案中包含的所有目標產生虛擬目標。

    成功時,傳回

    • 一個 property-set,包含要套用於依存項的使用需求
    • 一個產生的虛擬目標清單,該清單可能為空。

  2. 規則 build-dir ( )

    傳回專案的根建置目錄。

  3. 規則 main-target ( name )

    傳回對應於 namemain-target 類別實例。僅在專案完全載入後才能呼叫。

  4. 規則 has-main-target ( name )

    傳回是否存在指定名稱的 main-target。僅在專案完全載入後才能呼叫。

  5. 規則 find ( id : no-error ? )

    查找並返回指定 id 的目標,相對於自身處理。Id 可以指定目標或檔案名稱,目標優先。如果找不到目標,則可能會回報錯誤或不返回任何內容,具體取決於 no-error 參數。

類別 main-target

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 中一個具名的頂層目標。

  1. 規則 generate ( 屬性集 )

    覆寫 abstract-target.generate。透過查找所有需求被 屬性集 滿足的替代方案,並選擇需求集最長的一個,來為此主要目標選擇一個替代方案。返回在該替代方案上呼叫 generate 的結果。

    成功時,傳回

    • 一個 property-set,包含要套用於依存項的使用需求
    • 一個產生的虛擬目標清單,該清單可能為空。

類別 basic-target

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 ( )
}

實作了從來源構建主要目標替代方案的最標準方法。允許來源是檔案或其他主要目標,並處理這些依賴目標的生成。

  1. 規則 __init__ ( 名稱 : 專案 : 來源 * : 需求 * : 預設建置 * : 使用需求 * )

    name

    目標的名稱

    project

    宣告目標的 專案

  2. 規則 generate ( 屬性集 )

    覆寫 abstract-target.generate。決定最終建置屬性,生成來源,並呼叫 construct。不應覆寫此方法。

    成功時,傳回

    • 一個 property-set,包含要套用於依存項的使用需求
    • 一個產生的虛擬目標清單,該清單可能為空。

  3. 規則 construct ( 名稱 : 來源目標 * : 屬性集 )

    為此抽象目標構建虛擬目標。返回一個使用需求屬性集和一個虛擬目標列表。應在衍生類別中覆寫。

類別 typed-target

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 是最常見的目標替代方案類型。建立類型化目標的規則會針對每種類型自動定義。

  1. 規則 __init__ ( 名稱 : 專案 : 類型 : 來源 * : 需求 * : 預設建置 * : 使用需求 * )

    name

    目標的名稱

    project

    宣告目標的 專案

    類型

    目標的 類型

  2. 規則 type ( )

    返回目標的 類型

  3. 規則 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」規則來建立新的實例。實例是不可變的。

  1. 規則 raw ( )

    返回儲存屬性的 Jam 列表。

  2. 規則 str ( )

    返回儲存屬性的字串表示。

  3. 規則 propagated ( )

    返回一個包含此 屬性集 中所有 傳播 屬性的 屬性集

  4. 規則 add ( ps )

    返回一個新的 屬性集,其中包含此 屬性集ps 中屬性的聯集。

    注意事項

    如果 ps 包含應覆蓋此物件中值的非自由屬性,請改用 refine

  5. 規則 add-raw ( properties * )

    add 相似,但它接受屬性列表而不是 屬性集

  6. 規則 refine ( ps )

    透過覆蓋在 ps 中指定了不同值的任何非自由和非條件屬性來精簡屬性。返回產生的 屬性集

  7. 規則 get ( feature )

    返回 feature 的所有值。


PrevUpHomeNext