如何在 CMake 中使用 CCache?

新手上路,请多包涵

我想做以下事情:如果 CCache 存在于 PATH 中,则使用“ccache g++”进行编译,否则使用 g++。我尝试编写一个小的 my-cmake 脚本,其中包含

    CC="ccache gcc" CXX="ccache g++" cmake $*

但它似乎不起作用(运行 make 仍然不使用 ccache;我使用 CMAKE_VERBOSE_MAKEFILE 检查了这一点)。

更新:

根据 此链接,我尝试将脚本更改为

     cmake -D CMAKE_CXX_COMPILER="ccache" -D CMAKE_CXX_COMPILER_ARG1="g++" -D CMAKE_C_COMPILER="ccache" -D CMAKE_C_COMPILER_ARG1="gcc" $*

但是 cmake 会抱怨使用编译器 ccache 的测试失败(这是可以预料的)。

原文由 amit kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.1k
2 个回答

我个人有 /usr/lib/ccache 在我的 $PATH 。该目录包含大量符号链接,用于编译器可以调用的每个可能的名称(如 gccgcc-4.3 ),都指向 ccache。

而且我什至没有创建符号链接。当我在 Debian 上安装 ccache 时,该目录已预先填充。

原文由 Nicolás 发布,翻译遵循 CC BY-SA 2.5 许可协议

这里有 2 种我认为干净/可靠的方法,也 不会 污染你的 CMake 代码。

1.) 设置环境变量

这种方法很好,因为您不必为每个 CMake 项目单独设置它。缺点是您可能不希望每个 CMake 项目都使用 ccache。

 # Requires CMake 3.17 (https://cmake.org/cmake/help/latest/envvar/CMAKE_LANG_COMPILER_LAUNCHER.html)
export CMAKE_CXX_COMPILER_LAUNCHER=/usr/bin/ccache
export CMAKE_C_COMPILER_LAUNCHER=/usr/bin/ccache

2.) 项目配置时传入缓存变量

骗子对每个项目都做有点烦人。不过,这可以被您的 IDE 否定。

 # Requires CMake 3.4
$ cmake ... -D CMAKE_CXX_COMPILER_LAUNCHER=/usr/bin/ccache \
  -D CMAKE_C_COMPILER_LAUNCHER=/usr/bin/ccache

注意:实际上没有必要指定完整路径。

如果 ccache 在您的路径中,您可以指定 ccache 代替。

 export CMAKE_CXX_COMPILER_LAUNCHER=ccache
export CMAKE_C_COMPILER_LAUNCHER=ccache

原文由 jpr42 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题