如何在Boost Build/b2/bjam中通过ID获取Jamfile目录路径?
如何在B2中获取use-project定义的项目路径?
我在jamroot文件里配置了如下内容:
use-project /myproject : $(TOP)/path/to/jamfile/dir/of/my/project ;
配置后,当myproject里定义了名为mylib的库时,我可以在其他jamfile里用项目ID直接引用,不用写冗长的相对路径:
# 使用项目ID引用(推荐) lib myotherlib : $(SRC) /myproject//mylib<link>shared ;
替代原本需要写相对路径的繁琐写法:
# 相对路径写法 lib myotherlib : $(SRC) relative/path/to/jamfile/dir/of/my/project//mylib<link>shared ;
现在的问题是:怎么通过编程方式获取/myproject这个ID对应的实际路径(也就是$(TOP)/path/to/jamfile/dir/of/my/project)?
解决方案
用B2内置的project-path规则就能直接获取,写法如下:
local myproject-root = [ project-path /myproject ] ;
执行这条语句后,myproject-root变量就会存储/myproject对应的实际路径,后续可以直接用这个变量做各种操作。
应用场景
- 无需为
myproject的子项目(即$(TOP)/path/to/jamfile/dir/of/my/project子目录里的jamfile)单独定义项目ID,直接通过myproject-root拼接子路径即可引用 - 方便共享资源文件,直接用获取到的路径来引用项目内的资源文件,避免路径维护问题
内容的提问来源于stack exchange,提问作者Gabriel Devillers
相关产品推荐
相关产品推荐

