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

如何在bjam项目中配置使用ccache编译工具

在Bjam中配置GCC+ccache(拆分编译与链接)

关键原因

Bjam默认会把编译(gcc -c)和链接(gcc)合并成单一步骤,但ccache只对纯编译阶段生效——链接阶段不会产生可缓存的编译产物,所以必须让Bjam拆分这两个流程,才能让ccache发挥作用。

具体配置步骤

1. 给GCC工具集注入ccache

在你的user-config.jam(全局配置)或者项目根目录的Jamfile(项目级配置)里,添加自定义GCC工具集:

using gcc : ccache :
    ccache g++ ;

这里用ccache g++替换了默认的g++命令,让所有编译请求先经过ccache处理。

2. 强制Bjam拆分编译与链接

Bjam只有在链接多个目标文件时才会自动拆分流程,单文件编译时可能还是会合并。你可以用两种方式确保拆分:

方式一:显式拆分编译、链接步骤

不要直接用exe规则一步生成可执行文件,先编译成.o目标文件,再单独链接:

# 第一步:编译源文件为目标文件
obj main.o : main.cpp ;
# 第二步:链接目标文件生成可执行文件
exe my_app : main.o ;

方式二:全局强制拆分

在配置文件开头加一行,给链接阶段加一个无意义的选项,迫使Bjam单独执行链接:

flags gcc.link LINKFLAGS : -Wl,--start-group ;

这个选项不会影响链接结果,但会让Bjam认为链接需要独立步骤。

3. 验证配置是否生效

运行Bjam时加上-d+2查看详细命令输出:

bjam -d+2 toolset=gcc-ccache

如果看到编译命令是ccache g++ -c main.cpp -o main.o,链接命令是g++ main.o -o my_app,说明配置成功,ccache已经在编译阶段工作了。

额外优化

  • 设置环境变量指定ccache缓存目录,避免默认目录的权限问题:
    export CCACHE_DIR=$HOME/.ccache
    
  • 开启缓存压缩节省磁盘空间:
    export CCACHE_COMPRESS=true
    

内容的提问来源于stack exchange,提问作者eL.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:45:04