From 8fab38662cb6fd70483bd552c44860bd9304dbd1 Mon Sep 17 00:00:00 2001 From: snider Date: Mon, 6 Oct 2025 21:45:00 +0100 Subject: [PATCH] Refactor ccache usage in CMake to enable it for all platforms and simplify usability checks --- CMakeLists.txt | 2 +- cmake/FindCcache.cmake | 26 +++----------------------- 2 files changed, 4 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fa197d89..f5f5cf58 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,7 +30,7 @@ endif() include(DocBuilder) option (USE_CCACHE "Use ccache if a usable instance is found" ON) -if (USE_CCACHE AND NOT WIN32) +if (USE_CCACHE) include(FindCcache) else() message(STATUS "ccache deselected") diff --git a/cmake/FindCcache.cmake b/cmake/FindCcache.cmake index 364f943d..4b440f5a 100644 --- a/cmake/FindCcache.cmake +++ b/cmake/FindCcache.cmake @@ -1,28 +1,8 @@ find_program(CCACHE_FOUND ccache) if (CCACHE_FOUND) - # Try to compile a test program with ccache, in order to verify if it really works. (needed on exotic setups) - set(TEST_PROJECT "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/CMakeTmp") - file(WRITE "${TEST_PROJECT}/CMakeLists.txt" [=[ -cmake_minimum_required(VERSION 3.10) -project(test) -option (CCACHE "") -cmake_policy(SET CMP0091 NEW) -file(WRITE "${CMAKE_SOURCE_DIR}/test.cpp" "int main() { return 0; }") -set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE} cache_dir=${CMAKE_SOURCE_DIR}/build/.ccache") -set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCACHE} cache_dir=${CMAKE_SOURCE_DIR}/build/.ccache") -add_executable(main test.cpp) -]=]) - cmake_policy(SET CMP0091 NEW) - try_compile(RET "${TEST_PROJECT}/build" "${TEST_PROJECT}" "test" CMAKE_FLAGS -DCCACHE="${CCACHE_FOUND} -DCMAKE_POLICY_DEFAULT_CMP0091=NEW") - unset(TEST_PROJECT) - if (${RET}) - # Success - message(STATUS "Found usable ccache: ${CCACHE_FOUND}") - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_FOUND} cache_dir=${CMAKE_SOURCE_DIR}/build/.ccache") - set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCACHE_FOUND} cache_dir=${CMAKE_SOURCE_DIR}/build/.ccache") - else() - message(STATUS "Found ccache ${CCACHE_FOUND}, but is UNUSABLE! Return code: ${RET}") - endif() + message(STATUS "Found usable ccache: ${CCACHE_FOUND}") + set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_FOUND} cache_dir=${CMAKE_SOURCE_DIR}/build/.ccache") + set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCACHE_FOUND} cache_dir=${CMAKE_SOURCE_DIR}/build/.ccache") else() message(STATUS "ccache NOT found! Please install it for faster rebuilds.") endif() \ No newline at end of file