Boost C++ Libraries

PrevUpHomeNext

内置规则

本节包含可用于 Jamfile 的所有规则的列表——既包括定义新目标的规则,也包括辅助规则。

exe

创建可执行文件。另请参见 “Programs” 一节。

lib

创建库文件。另请参见 “Libraries” 一节。

install

安装已构建的目标和其他文件。另请参见 “Installing” 一节。

alias

创建其他目标的别名。另请参见 “Alias” 一节。

unit-test

创建一个可自动执行的程序。另请参见 “Testing” 一节。

compile, compile-fail, link, link-fail, run, run-fail

用于测试的专用规则。另请参见 “Testing” 一节。

check-target-builds

借助 check-target-builds,你可以根据 meta 目标的构建与否来有条件地使用不同的属性。这类似于 autotools 项目中配置脚本的功能。函数签名如下所示:

rule check-target-builds ( target message ? : true-properties * : false-properties * )
        

仅当将需求或使用需求传递至 meta 目标规则时,才能使用这个函数。例如,要在库可用时让应用程序链接到该库,可以使用以下内容:

exe app : app.cpp : [ check-target-builds has_foo "System has foo" : <library>foo : <define>FOO_MISSING=1 ] ;
        

另一个示例中,别名规则可用于汇总配置选项并让其他 meta 目标使用这些选项,方法如下:

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-treeglob 类似,不同之处在于它从包含 Jamfile 的目录开始递归操作。例如

ECHO [ glob-tree *.cpp : .svn ] ;
        

将打印你项目中所有 C++ 文件的名称。.svn 排除模式可阻止 glob-tree 规则进入 Subversion 版本控制系统的管理目录。

项目

声明项目 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


PrevUpHomeNext