Skip to content

Commit 0476509

Browse files
committed
[FIXUP] Learn to work with recent ccache in MSVC builds
1 parent 2fd67c7 commit 0476509

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

cmake/optional.cmake

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,29 @@
77
if(CCACHE)
88
find_program(CCACHE_EXECUTABLE ccache)
99
if(CCACHE_EXECUTABLE)
10-
set(CCACHE ON)
1110
if(MSVC)
12-
# See https://github.com/ccache/ccache/wiki/MS-Visual-Studio
13-
set(MSVC_CCACHE_WRAPPER_CONTENT "\"${CCACHE_EXECUTABLE}\" \"${CMAKE_CXX_COMPILER}\"")
14-
set(MSVC_CCACHE_WRAPPER_FILENAME wrapped-cl.bat)
15-
file(WRITE ${CMAKE_BINARY_DIR}/${MSVC_CCACHE_WRAPPER_FILENAME} "${MSVC_CCACHE_WRAPPER_CONTENT} %*")
16-
list(APPEND CMAKE_VS_GLOBALS
17-
"CLToolExe=${MSVC_CCACHE_WRAPPER_FILENAME}"
18-
"CLToolPath=${CMAKE_BINARY_DIR}"
19-
"DebugInformationFormat=OldStyle"
20-
)
11+
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.24)
12+
# ccache >= 4.8 requires compile batching turned off that is available since CMake 3.24.
13+
# See https://github.com/ccache/ccache/wiki/MS-Visual-Studio
14+
set(CCACHE ON)
15+
set(MSVC_CCACHE_WRAPPER_CONTENT "\"${CCACHE_EXECUTABLE}\" \"${CMAKE_CXX_COMPILER}\"")
16+
set(MSVC_CCACHE_WRAPPER_FILENAME wrapped-cl.bat)
17+
file(WRITE ${CMAKE_BINARY_DIR}/${MSVC_CCACHE_WRAPPER_FILENAME} "${MSVC_CCACHE_WRAPPER_CONTENT} %*")
18+
list(APPEND CMAKE_VS_GLOBALS
19+
"CLToolExe=${MSVC_CCACHE_WRAPPER_FILENAME}"
20+
"CLToolPath=${CMAKE_BINARY_DIR}"
21+
"DebugInformationFormat=OldStyle"
22+
)
23+
set(CMAKE_VS_NO_COMPILE_BATCHING ON)
24+
elseif(CCACHE STREQUAL "AUTO")
25+
message(WARNING "ccache requested and found, but CMake >= 3.24 is required to use it properly. Disabling.\n"
26+
"To skip ccache check, use \"-DCCACHE=OFF\".\n")
27+
set(CCACHE OFF)
28+
else()
29+
message(FATAL_ERROR "ccache requested and found, but CMake >= 3.24 is required to use it properly.")
30+
endif()
2131
else()
32+
set(CCACHE ON)
2233
list(APPEND CMAKE_C_COMPILER_LAUNCHER ${CCACHE_EXECUTABLE})
2334
list(APPEND CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_EXECUTABLE})
2435
endif()

0 commit comments

Comments
 (0)