CMake + ccache:RULE_LAUNCH_COMPILE 或 CMAKE_<LANG>_COMPILER_LAUNCHER

Posted

技术标签:

【中文标题】CMake + ccache:RULE_LAUNCH_COMPILE 或 CMAKE_<LANG>_COMPILER_LAUNCHER【英文标题】:CMake + ccache: RULE_LAUNCH_COMPILE or CMAKE_<LANG>_COMPILER_LAUNCHER 【发布时间】:2020-10-29 13:29:03 【问题描述】:

在 CMake 中使用 ccache 时,似乎有两种设置项目的方法。

第一个是RULE_LAUNCH_COMPILE

find_program(CCACHE "ccache")
if(CCACHE)
    set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "$CCACHE")
endif()

第二个是CMAKE_&lt;LANG&gt;_COMPILER_LAUNCHER:

find_program(CCACHE "ccache")
if(CCACHE)
    set(CMAKE_C_COMPILER_LAUNCHER $CCACHE)
    set(CMAKE_CXX_COMPILER_LAUNCHER $CCACHE)
endif(CCACHE)

哪一个被认为是最佳实践? :)

感谢您的帮助。

【问题讨论】:

【参考方案1】:

第一个将为构建中的所有语言使用启动器。第二个将为CCXX 使用相同的启动器,但不适用于其他语言。这两种方法略有不同,因为第二种方法允许针对不同语言使用不同的启动器。第二种方法允许更精细的控制并且可能是优选的。还有用于控制哪些项目使用启动器的环境变量和目录和目标属性。

https://crascit.com/2016/04/09/using-ccache-with-cmake/

【讨论】:

以上是关于CMake + ccache:RULE_LAUNCH_COMPILE 或 CMAKE_<LANG>_COMPILER_LAUNCHER的主要内容,如果未能解决你的问题,请参考以下文章

CMake + ccache:RULE_LAUNCH_COMPILE 或 CMAKE_<LANG>_COMPILER_LAUNCHER

ccache 在不删除 CMake 文件的情况下不会命中缓存

清除 ccache 或使用多个 ccache 目录的原因

ccache的缺点

ccache 的“要求链接”是啥意思

使用 gcc 和 ccache