首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在CMake中使用CCache?

如何在CMake中使用CCache?
EN

Stack Overflow用户
提问于 2009-11-29 22:36:39
回答 9查看 49.7K关注 0票数 100

我想做以下事情:如果路径中有CCache,使用"ccache g++“进行编译,否则使用g++。我试着写了一个小的my-cmake脚本,其中包含

代码语言:javascript
复制
    CC="ccache gcc" CXX="ccache g++" cmake $*

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

更新:

根据this link,我尝试将我的脚本更改为

代码语言:javascript
复制
     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的测试失败(这是可以预料到的)。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-12-24 01:21:12

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

我甚至都没有创建符号链接。当我在Debian上安装ccache时,这个目录是预先填满的。

票数 72
EN

Stack Overflow用户

发布于 2016-06-15 15:19:32

从CMAKE 3.4开始,您可以执行以下操作:

代码语言:javascript
复制
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
票数 128
EN

Stack Overflow用户

发布于 2014-06-19 19:48:09

现在可以将ccache指定为编译命令和链接命令的启动器(从cmake 2.8.0开始)。这适用于Makefile和忍者生成器。为此,只需设置以下属性:

代码语言:javascript
复制
find_program(CCACHE_FOUND ccache)
if(CCACHE_FOUND)
    set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
    set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache) # Less useful to do it for linking, see edit2
endif(CCACHE_FOUND)

也可以仅为特定目录或目标设置这些属性。

对于忍者来说,从3.4版本开始这是可能的。对于XCode,Craig Scott在他的回答中给出了一个变通方法。

编辑:感谢uprego和Lekensteyn的评论,我编辑了答案,以检查ccache在用作启动器之前是否可用,以及哪些生成器可以使用编译启动器。

sccache:@Emilio Cobos建议避免在链接部分这样做,因为Edit2不会提高链接速度,还会与其他类型的缓存打乱,比如sccache

票数 108
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1815688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档