所有抽象目标的基类。
class abstract-target { rule __init__ ( name : project ) rule name ( ) rule project ( ) rule location ( ) rule full-name ( ) rule generate ( property-set ) }
从 abstract-target 派生的类
rule __init__ ( name : project )
name
目标在 Jamfile 中的名称。
project
此目标所属的 project。
rule name ( )
返回此目标的名称。
rule project ( )
返回此目标的 project。
rule location ( )
返回声明目标的位置。
rule full-name ( )
返回此目标的用户可读名称。
rule 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 ( ) }
此类具有以下职责
维护此项目中主目标的列表并构建它们。
rule generate ( property-set )
覆盖 abstract-target.generate。为包含在此项目中的所有目标生成虚拟目标。
成功时,返回
rule build-dir ( )
返回项目的根构建目录。
rule main-target ( name )
返回对应于 name
的 main-target 类实例。只能在项目完全加载后调用。
rule has-main-target ( name )
返回是否存在具有指定名称的 main-target。只能在项目完全加载后调用。
rule find ( id : no-error ? )
查找并返回具有指定 id 的目标,相对于 self 处理。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 中命名的顶级目标。
rule generate ( property-set )
覆盖 abstract-target.generate。通过查找所有其要求满足 property-set
的备选方案并选择具有最长要求集的备选方案来选择此主目标的备选方案。返回在该备选方案上调用 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 ( ) }
实现了从源代码构建主目标备选方案的最标准方法。允许源代码是文件或其他主目标,并处理这些依赖目标的生成。
rule __init__ ( name : project : sources * : requirements * : default-build * : usage-requirements * )
name
目标的名称
project
声明目标的 project。
rule generate ( property-set )
覆盖 abstract-target.generate。确定最终构建属性、生成源代码并调用 construct。此方法不应被覆盖。
成功时,返回
rule construct ( name : source-targets * : property-set )
为该抽象目标构建虚拟目标。返回用法要求属性集和虚拟目标列表。应在派生类中覆盖。
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 是最常见类型的目标备选方案。用于创建类型化目标的规则会为每种类型自动定义。
rule __init__ ( name : project : type : sources * : requirements * : default-build * : usage-requirements * )
rule type ( )
返回目标的 type。
rule construct ( name : source-targets * : property-set )
实现 basic-target.construct。尝试使用适合给定 property-set 的生成器创建正确类型的目标。返回一个 property-set,其中包含用法要求和虚拟目标列表。
此函数由 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 ) }
标识和值之间存在 1<->1 的对应关系。此类的两个实例都不相等。为了维护此属性,应使用“property-set.create”规则创建新实例。实例是不可变的。
rule raw ( )
返回存储属性的 Jam 列表。
rule str ( )
返回存储属性的字符串表示形式。
rule propagated ( )
返回一个 property-set,其中包含此 property-set 中的所有 propagated 属性。
rule add ( ps )
返回一个新的 property-set,其中包含此 property-set 和 ps
中的属性的并集。
如果 ps
包含应覆盖此对象中值的非自由属性,请改用 refine。
rule add-raw ( properties * )
链接 add,除了它采用属性列表而不是 property-set。
rule refine ( ps )
通过覆盖 ps
中指定了不同值的任何非自由和非条件属性来细化属性。返回生成的 property-set。
rule get ( feature )
返回 feature
的所有值。