有没有办法获取 Jamroot 文件的位置,以用作项目中另一个 Jamfile 中的常量?
现在,我的 Jamroot 中有这样一个问题:
constant HOME : [ os.environ HOME ] ;
constant MYPROJECT_ROOT : $(HOME)/src/myproject ;
然后稍后我可能会在另一个 Jamfile 中做这样的事情,以允许我包含带有项目根目录路径的标头。
<include>$(MYPROJECT_ROOT)
这尤其不令人满意,因为这意味着如果我与其他人共享此项目,他们必须将其保留在相对于其$HOME
完全相同的位置,或者必须更新 Jamroot。
我对执行此特定包含的智能方法感兴趣(而不是我无知的初学者使用常量的方式)。但我也有兴趣以我要求的方式解决问题 - 通过将Jamroot位置放入常量 - 因为这在其他方面也可能有用。
使用path-constant
规则。
path-constant MYPROJECT_ROOT : . ;
然后在子项目中,你可以用$(MYPROJECT_ROOT)
获取 Jamroot 的目录。
请注意,通常人们将此变量命名为 TOP 而不是 MYPROJECT_ROOT,但这只是一个约定。