cmake: fix ccache detection

This commit is contained in:
anon 2021-03-16 13:41:15 +00:00 committed by selsta
parent 8dbe2e57ac
commit f0fa959383
No known key found for this signature in database
GPG Key ID: 2EA0A99A8B07AE5E
1 changed files with 13 additions and 6 deletions

View File

@ -42,12 +42,19 @@
find_program(CCACHE_FOUND ccache) find_program(CCACHE_FOUND ccache)
if (CCACHE_FOUND) if (CCACHE_FOUND)
# Try to compile a test program with ccache, in order to verify if it really works. (needed on exotic setups) # Try to compile a test program with ccache, in order to verify if it really works. (needed on exotic setups)
# Create a temporary file with a simple program. set(TEST_PROJECT "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/CMakeTmp")
set(TEMP_CPP_FILE "${CMAKE_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/CMakeTmp/test-program.cpp") file(WRITE "${TEST_PROJECT}/CMakeLists.txt" [=[
file(WRITE "${TEMP_CPP_FILE}" "int main() { return 0; }") cmake_minimum_required(VERSION 3.1)
# And run the found ccache on it. project(test)
execute_process(COMMAND "${CCACHE_FOUND}" "${CMAKE_CXX_COMPILER}" "${TEMP_CPP_FILE}" RESULT_VARIABLE RET) option (CCACHE "")
if (${RET} EQUAL 0) file(WRITE "${CMAKE_SOURCE_DIR}/test.cpp" "int main() { return 0; }")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCACHE}")
add_executable(test test.cpp)
]=])
try_compile(RET "${TEST_PROJECT}/build" "${TEST_PROJECT}" "test" CMAKE_FLAGS -DCCACHE="${CCACHE_FOUND}")
unset(TEST_PROJECT)
if (${RET})
# Success # Success
message(STATUS "Found usable ccache: ${CCACHE_FOUND}") message(STATUS "Found usable ccache: ${CCACHE_FOUND}")
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_FOUND}") set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_FOUND}")