diff --git a/CMake/CCache.cmake b/CMake/CCache.cmake index 775256cd3b..5cd4c9c478 100644 --- a/CMake/CCache.cmake +++ b/CMake/CCache.cmake @@ -1,10 +1,19 @@ find_program(CCACHE_BIN NAMES ccache sccache) if(CCACHE_BIN) - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE_BIN}) + # Official ccache recommendation is to set CMAKE_C(XX)_COMPILER_LAUNCHER + if (NOT CMAKE_C_COMPILER_LAUNCHER MATCHES "ccache") + list(INSERT CMAKE_C_COMPILER_LAUNCHER 0 "${CCACHE_BIN}") + # ccache uses -I when compiling without preprocessor, which makes clang complain. + if("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang") + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Qunused-arguments -fcolor-diagnostics") + endif() + endif() - # ccache uses -I when compiling without preprocessor, which makes clang complain. - if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Qunused-arguments -fcolor-diagnostics") - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Qunused-arguments -fcolor-diagnostics") + if (NOT CMAKE_CXX_COMPILER_LAUNCHER MATCHES "ccache") + list(INSERT CMAKE_CXX_COMPILER_LAUNCHER 0 "${CCACHE_BIN}") + # ccache uses -I when compiling without preprocessor, which makes clang complain. + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Qunused-arguments -fcolor-diagnostics") + endif() endif() endif()