ccache不支持某些编译器选项(例如--coverage)。如果存在不受支持的编译器选项,则会编译但不使用缓存。
如何启用ccache(使用CC / CXX环境变量修改PATH)的方法不止一种。
我想检测编译器是否使用ccache,如果是,则禁用不支持的编译器选项。
我提出的最好的是这样的:
CC = $(shell which $(CC))
ifeq (,$(findstring ccache,$(CC)))
任何想法如何改善这个?
答案 0 :(得分:2)
这可能是一个更优雅的解决方案:
ifeq ($(shell readlink -f `which $(CC)`),$(shell which ccache))
echo "Using ccache"
else
echo "Not using ccache"
endif
答案 1 :(得分:1)
Smani的解决方案可能不起作用,具体取决于配置ccache的方式(例如,在RedHat Linux的ccache 3.3.4中),/ usr / lib64 / ccache /中的编译器符号链接指向/ usr / bin / ccache,但是{{1} }返回/ bin / ccache)。
此解决方案不在乎ccache的位置,即使将ccache用作前缀也可以使用:
which ccache
这可以通过编译一个空文件并检查编译器是否知道ccache --ccache-skip标志来实现。
请注意,一旦知道启用了ccache,您可以使用--ccache-skip来代替它的--coverage标志。
还要注意,即使ccache位于路径中,也可能会被CCACHE_DISABLE环境变量或ccache.conf文件禁用。