mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2025-12-10 09:32:29 +01:00
Add CMake option to build with CCache (#12604)
This speeds up CMake recompilation significantly. The default behaviour is to search for CCache and use it if available; this can be disabled explicitly by setting OPENRCT2_USE_CCACHE=OFF in CMake.
This commit is contained in:
@@ -4,6 +4,21 @@ if (CMAKE_BINARY_DIR STREQUAL CMAKE_SOURCE_DIR)
|
||||
message(FATAL_ERROR "Building in-source is not supported! Create a build dir and remove ${CMAKE_SOURCE_DIR}/CMakeCache.txt")
|
||||
endif()
|
||||
|
||||
# Note: Searching for CCache must be before project() so project() can use CCache too
|
||||
# if it is available
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
|
||||
find_package(CCache)
|
||||
|
||||
if (CCache_FOUND)
|
||||
option(OPENRCT2_USE_CCACHE "Use CCache to improve recompilation speed (optional)" ON)
|
||||
if (OPENRCT2_USE_CCACHE)
|
||||
# Use e.g. "ccache clang++" instead of "clang++"
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCache_EXECUTABLE}")
|
||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCache_EXECUTABLE}")
|
||||
endif (OPENRCT2_USE_CCACHE)
|
||||
endif (CCache_FOUND)
|
||||
|
||||
project(openrct2 CXX)
|
||||
|
||||
include(cmake/platform.cmake)
|
||||
|
||||
22
cmake/FindCCache.cmake
Normal file
22
cmake/FindCCache.cmake
Normal file
@@ -0,0 +1,22 @@
|
||||
# To find CCache compiler cache
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
find_program(CCache_EXECUTABLE ccache)
|
||||
|
||||
if (CCache_EXECUTABLE)
|
||||
execute_process(COMMAND "${CCache_EXECUTABLE}" --version
|
||||
OUTPUT_VARIABLE CCache_VERSION_OUTPUT
|
||||
)
|
||||
|
||||
string(REGEX MATCH "version ([0-9]+\\.[0-9]+\\.[0-9]+)" CCache_VERSION_TEMP ${CCache_VERSION_OUTPUT})
|
||||
set(CCache_VERSION "${CMAKE_MATCH_0}")
|
||||
endif (CCache_EXECUTABLE)
|
||||
|
||||
find_package_handle_standard_args(CCache
|
||||
FOUND_VAR CCache_FOUND
|
||||
REQUIRED_VARS CCache_EXECUTABLE
|
||||
VERSION_VAR CCache_VERSION
|
||||
)
|
||||
|
||||
mark_as_advanced(CCache_EXECUTABLE)
|
||||
Reference in New Issue
Block a user