我想做以下事情:如果路径中有CCache,使用"ccache g++“进行编译,否则使用g++。我试着写了一个小的my-cmake脚本,其中包含
CC="ccache gcc" CXX="ccache g++" cmake $*
但它似乎不起作用(运行make仍然不使用ccache;我使用CMAKE_VERBOSE_MAKEFILE on检查了这一点)。
更新:
根据this link,我尝试将我的脚本更改为
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的测试失败(这是可以预料到的)。
发布于 2009-12-24 01:21:12
我个人在我的$PATH
中有/usr/lib/ccache
。此目录包含大量符号链接,用于调用编译器的每个可能名称(如gcc
和gcc-4.3
),所有这些符号链接都指向ccache。
我甚至都没有创建符号链接。当我在Debian上安装ccache时,这个目录是预先填满的。
发布于 2016-06-15 15:19:32
从CMAKE 3.4开始,您可以执行以下操作:
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
发布于 2014-06-19 19:48:09
现在可以将ccache指定为编译命令和链接命令的启动器(从cmake 2.8.0开始)。这适用于Makefile和忍者生成器。为此,只需设置以下属性:
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
https://stackoverflow.com/questions/1815688
复制相似问题