我使用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/