如果您的扩展只在一个项目中使用,则可以将它们放在一个单独的 .jam
文件中,并由您的 Jamroot.jam
导入。如果这些扩展将在许多项目中使用,用户会感谢您最后的润色。
using
规则提供了一种标准机制来加载和配置扩展。为了使它起作用,您的模块应该提供一个 init
规则。该规则将使用传递给 using
规则的相同参数调用。允许的参数集由您确定。例如,您可以允许用户指定路径、工具版本和其他选项。
以下是一些有助于使 Boost.Build 更加一致的指南
init
规则永远不会失败。即使用户提供了错误的路径,您也应该发出警告并继续。配置可以在不同的机器之间共享,并且一台机器上的错误值在另一台机器上可能是可以的。
优先指定要执行的命令而不是指定工具的安装路径。首先,这提供了更多控制:可以指定
/usr/bin/g++-snapshot time g++
作为命令。其次,虽然某些工具具有逻辑的“安装根目录”,但最好是用户不必记住特定工具是否需要完整命令或路径。
检查多次初始化。用户可能会尝试多次初始化模块。您需要检查这一点并决定要做什么。通常情况下,除非您支持多个版本的工具,否则重复初始化是用户错误。如果工具的版本可以在初始化期间指定,请确保版本始终指定或从不指定(在这种情况下,工具只初始化一次)。例如,如果您允许
using yfc ; using yfc : 3.3 ; using yfc : 3.4 ;
那么不清楚第一次初始化对应于工具的 3.3 版、工具的 3.4 版还是其他版本。这会导致使用相同版本进行两次构建。
如果可能, init
必须可以不带参数调用。在这种情况下,它应该尝试自动检测所有必要的信息,例如,通过在 PATH
或常用安装位置中查找工具。通常这是可能的,并允许用户简单地编写
using yfc ;
考虑使用 tools/common
模块中的功能。您可以查看 tools/gcc.jam
在 init
规则中如何使用该模块。