要调用 Boost.Build,在命令行中键入 b2。接受三种类型的命令行标记,可以按任意顺序排列
选项以一个或两个连字符开头。下面列出了标准选项,每个项目都可以添加其他选项
属性指定要构建的内容的详细信息(例如调试或发布版本)。从语法上讲,所有包含等号的命令行标记都被视为指定属性。在最简单的形式中,属性看起来像 特性
=值
所有既不是选项也不是属性的标记都指定要构建的目标。可用的目标完全取决于您正在构建的项目。
要使用默认属性构建当前目录中 Jamfile 中定义的所有目标,请运行
b2
要构建特定目标,请在命令行中指定它们
b2 lib1 subproject//lib2
要请求某个属性的特定值,请将
添加到命令行中属性
=值
b2 toolset=gcc variant=debug optimization=space
Boost.Build 识别以下命令行选项。
--help
调用联机帮助系统。这将打印有关如何使用带有其他 --help* 选项的帮助系统的一般信息。
--clean
清除当前目录和任何子项目中的所有目标。请注意,与 make 中的 clean
目标不同,您可以将 --clean
与目标名称一起使用以清除特定目标。
--clean-all
清除所有目标,无论它们定义在哪里。特别是,它将清除父 Jamfile 中的目标以及在其他项目根目录下定义的目标。
--build-dir
更改所有正在构建的项目根目录的构建目录。当指定此选项时,所有 Jamroot 文件都必须声明一个项目名称。项目根目录的构建目录将通过连接 --build-dir
选项的值、Jamroot 中指定的项目名称以及 Jamroot 中指定的构建目录(如果未指定,则为 bin
)来计算。
此选项主要在从只读介质构建时有用,此时您无法修改 Jamroot。
--abbreviate-paths
通过缩写每个组件来压缩目标路径。此选项可用于防止路径长度超过文件系统支持的长度。另请参阅 “目标路径”部分。
--hash
使用 MD5 哈希压缩目标路径。此选项可用于防止路径长度超过文件系统支持的长度。此选项生成的路径比 --abbreviate-paths 短,但代价是使它们不太容易理解。另请参阅 “目标路径”部分。
--version
打印有关 Boost.Build 和 Boost.Jam 版本的信息。
-a
导致所有文件都被重新构建。
-n
不执行命令,只打印它们。
-q
在第一个错误处停止,而不是继续构建不依赖于失败目标的目标。
-j N
并行运行最多 N
个命令。
--debug-configuration
生成有关加载 Boost.Build 和工具集文件的信息。
--debug-building
打印正在构建的目标以及使用的属性。
--debug-generators
生成生成器搜索过程的调试输出。可用于调试自定义生成器。
-d0
禁止所有信息消息。
-d N
启用从 1 到 n 的累积调试级别。值是
-d +N
启用调试级别 N
。
-o 文件
将更新操作写入指定的文件而不是运行它们。
-s 变量
=值
将变量 变量
设置为 jam 语言解释器的全局范围内的 值
,覆盖从环境导入的变量。
在最简单的情况下,构建使用一组属性执行,您可以在命令行上使用表单 特性
=值
中的元素指定这些属性。特性的完整列表可以在 “内置特性”部分 中找到。最常见的特性总结如下。
表 3.2.
特性 | 允许的值 | 注释 |
---|---|---|
variant | debug,release | |
link | shared,static | 确定 Boost.Build 是否创建共享库或静态库 |
threading | single,multi | 导致生成的二进制文件是线程安全的。这需要源代码本身提供适当的支持。 |
address-model | 32,64 | 显式请求 32 位或 64 位代码生成。这通常需要您的编译器配置正确。如有问题,请参阅 “C++ 编译器”部分 和您的编译器文档。 |
toolset | (取决于配置) | 要使用的 C++ 编译器。有关详细信息,请参阅 “C++ 编译器”部分。 |
include | (任意字符串) | C 和 C++ 编译器的其他包含路径。 |
define | (任意字符串) | C 和 C++ 编译器的其他宏定义。字符串应为 SYMBOL 或 SYMBOL=VALUE |
cxxflags | (任意字符串) | 传递给 C++ 编译器的自定义选项。 |
cflags | (任意字符串) | 传递给 C 编译器的自定义选项。 |
linkflags | (任意字符串) | 传递给 C++ 链接器的自定义选项。 |
runtime-link | shared,static | 确定是否应使用 C 和 C++ 运行时的共享版本或静态版本。 |
如果您有多个给定 C++ 工具集的版本(例如,在 user-config.jam
中配置或自动检测,就像在 msvc 中发生的那样),您可以通过将
作为 工具集
-版本
toolset
特性的值传递来请求特定版本,例如 toolset=msvc-8.0
。
如果某个特性有一组固定的值,则可以在命令行上多次指定它。在这种情况下,所有内容都将构建多次——每个指定的特性值构建一次。例如,如果您使用
b2 link=static link=shared threading=single threading=multi
那么将执行总共 4 次构建。为方便起见,您可以使用逗号分隔值,而不是在单独的命令行元素中指定特性的所有请求值,例如
b2 link=static,shared threading=single,multi
逗号只有在特性有一组固定值时才具有此特殊含义,因此
b2 include=static,shared
不会被特殊处理。
所有既不是选项也不是属性的命令行元素都是要构建的目标的名称。请参阅 “目标标识符和引用”部分。如果未指定目标,则构建当前目录中的项目。