通往 Jamroot 路径的 boost-build/bjam 常量

Rav*_*ole 2 boost-build bjam

有没有办法获取 Jamroot 文件的位置,以用作项目中另一个 Jamfile 中的常量?

现在,我的 Jamroot 里有这样的东西:

constant HOME : [ os.environ HOME ] ;
constant MYPROJECT_ROOT : $(HOME)/src/myproject ;
Run Code Online (Sandbox Code Playgroud)

然后我可能会在另一个 Jamfile 中执行类似的操作,以允许我包含带有来自项目根目录的路径的标头。

<include>$(MYPROJECT_ROOT)
Run Code Online (Sandbox Code Playgroud)

这尤其令人不满意,因为这意味着如果我与其他人共享此项目,他们必须将其保留在与其相对的完全相同的位置$HOME,否则他们必须更新 Jamroot。

我对执行此特定包含的智能方法感兴趣(而不是我无知的使用常量的初学者方法)。但我也有兴趣按照我要求的方式解决问题 - 通过将 Jamroot 位置设置为常量 - 因为这在其他方面也可能有用。

AFo*_*lia 6

使用path-constant规则。

path-constant MYPROJECT_ROOT : . ;
Run Code Online (Sandbox Code Playgroud)

然后在子项目中,您可以通过$(MYPROJECT_ROOT).

请注意,通常人们将此变量命名为 TOP 而不是 MYPROJECT_ROOT,但这只是一种约定。