gcc - 在不同目录中使用已编译文件的绝对路径时,如何进行ccache缓存编译?

标签 gcc cmake ccache

我使用CMake创建一个makefile。 CMake创建包含绝对路径的GCC行。

为了加快编译速度,我使用了ccache。

从不同的位置构建相同的代码(例如,多个开发人员在其主目录下编译相同的代码)会导致ccache缓存未命中。

最佳答案

正如上面的评论中提到的那样,一个问题是预处理器行指令中的任何绝对路径都会被ccache散列,并且如果使用编译器选项-g,则编译器也会发出指向源代码文件的绝对路径。另一个类似的问题是,如果源代码文件的路径在命令行中是绝对路径,则如果代码具有__FILE__宏的扩展名,则该路径将被散列。

解决方案是升级到几天前发布的ccache 3.0。它具有对将绝对路径重写为相对路径以提高命中率的可选支持。请参见手册中的Compiling in different directories

关于gcc - 在不同目录中使用已编译文件的绝对路径时,如何进行ccache缓存编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2008642/

相关文章:

c - gcc 为什么以及如何发出 gets() 警告?

cmake - 添加测试项目以补充现有项目

c++ - ccache 是否完全优于 gcc 的预编译头文件?

docker - 在 docker 内部构建时使用 ccache

gcc - 在 GCC 中禁用 GOT

c++ - GCC 程序不捕获异常

c++ - 配置文件引导优化后嵌套 for 循环更快,但缓存未命中率更高

c++ - 汇编程序消息:错误:拇指条件指令应放在IT block 中— `strexeq r1,r2,[r4]'

visual-studio - 正确使用 VS_DEBUGGER_WORKING_DIRECTORY 等

c++ - 如何在 CMake 中使用 CCache?