首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检测编译器是否使用ccache

检测编译器是否使用ccache
EN

Stack Overflow用户
提问于 2014-02-25 14:42:24
回答 2查看 1.6K关注 0票数 1

ccache不支持某些编译器选项(例如-覆盖率)。如果有不受支持的编译器选项,它会编译,但缓存不会被使用。

如何启用ccache有多种方法(使用CC/CXX环境变量修改路径)。

我想检测编译器是否使用ccache,如果是,则禁用不支持的编译器选项。

我想出的最好的办法是:

代码语言:javascript
复制
CC = $(shell which $(CC))
ifeq (,$(findstring ccache,$(CC)))

有什么办法可以改进吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-26 21:20:33

这可能是一个更优雅的解决方案:

代码语言:javascript
复制
ifeq ($(shell readlink -f `which $(CC)`),$(shell which ccache))
    echo "Using ccache"
else
    echo "Not using ccache"
endif
票数 3
EN

Stack Overflow用户

发布于 2020-04-17 23:42:36

Smani的解决方案可能无法工作,这取决于配置中的ccache (例如,在RedHat Linux的ccache 3.3.4中,/usr/bin 64/ccache/指向/usr/bin/ccache但which ccache返回/bin/ccache中的编译器符号链接)。

这个解决方案不关心ccache在哪里,甚至如果使用ccache作为前缀也行:

代码语言:javascript
复制
ifeq ($(shell $(CC) -xc -c - --ccache-skip </dev/null 2>&1),)
    echo "Using ccache"
else
    echo "Not using ccache"
endif

这是通过编译一个空文件和检查编译器是否知道标志来实现的。

请注意,一旦您知道ccache是启用的,而不是省略--覆盖率标志,您可以使用-卡切-斯基普作为前缀。

还请注意,即使ccache在路径中,它也可能被CCACHE_DISABLE环境变量或ccache.conf文件禁用。

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

https://stackoverflow.com/questions/22017484

复制
相关文章

相似问题

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