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

如何在Boost Build/b2/bjam中设置JAMSHELL?设置无效问题排查

JAMSHELL变量在Jamroot中设置无效的解决办法

问题根因

在MSVC编译环境下,B2默认直接调用编译器执行编译任务,不会触发外部shell调用,因此Jamroot中设置的JAMSHELL变量不会生效。这个变量仅在B2需要通过shell执行脚本类命令(比如批量文件操作、自定义shell脚本)时才会被读取。

有效修改方式

要让B2使用自定义shell,必须通过以下两种方式之一传递变量:

  • 命令行参数直接指定:
    b2 JAMSHELL="cmddd /C %"
    
  • 设置系统环境变量:
    在命令行中先设置环境变量,再启动B2:
    set JAMSHELL=cmddd /C %
    b2
    

验证自定义shell是否生效

如果需要确认JAMSHELL是否正常工作,可以在Jamroot中添加一个需要shell执行的自定义动作:

actions TestCustomShell
{
    echo "Running via custom shell"
}

TestCustomShell verify_shell ;

运行B2时,若指定的cmddd不存在,就会触发报错,以此验证变量是否生效。

内容的提问来源于stack exchange,提问作者Gabriel Devillers

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:25:52