You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:32:07