mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 17:58:20 +00:00
cmake - support ccache for msvc (required cmake 3.25+)
As described in https://github.com/ccache/ccache/wiki/MS-Visual-Studio#usage-with-cmake
This commit is contained in:
@@ -30,10 +30,14 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|||||||
find_program(CCACHE_FOUND ccache)
|
find_program(CCACHE_FOUND ccache)
|
||||||
if(CCACHE_FOUND)
|
if(CCACHE_FOUND)
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
||||||
|
message(STATUS "`ccache` is found, using it as a compiler launcher.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_definitions(-D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR)
|
add_definitions(-D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR)
|
||||||
|
|
||||||
|
if(POLICY CMP0141) # 3.25+
|
||||||
|
cmake_policy(SET CMP0141 NEW) # Support for `CMAKE_MSVC_DEBUG_INFORMATION_FORMAT`.
|
||||||
|
endif()
|
||||||
if(POLICY CMP0144) # 3.27
|
if(POLICY CMP0144) # 3.27
|
||||||
cmake_policy(SET CMP0144 NEW) # find_package() uses upper-case <PACKAGENAME>_ROOT variables.
|
cmake_policy(SET CMP0144 NEW) # find_package() uses upper-case <PACKAGENAME>_ROOT variables.
|
||||||
endif()
|
endif()
|
||||||
@@ -123,6 +127,26 @@ if((BUILD_CONVERT OR BUILD_GEOMSERVER OR BUILD_IFCPYTHON) AND(NOT BUILD_IFCGEOM)
|
|||||||
set(BUILD_IFCGEOM ON)
|
set(BUILD_IFCGEOM ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(CCACHE_FOUND AND MSVC)
|
||||||
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
||||||
|
if(MSVC)
|
||||||
|
# By default Visual Studio generators will use /Zi which is not compatible
|
||||||
|
# with ccache, so tell Visual Studio to use /Z7 instead.
|
||||||
|
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:Embedded>")
|
||||||
|
# Not needed for Ninja.
|
||||||
|
if(CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||||
|
file(COPY_FILE
|
||||||
|
${CCACHE_FOUND} ${CMAKE_BINARY_DIR}/cl.exe
|
||||||
|
ONLY_IF_DIFFERENT)
|
||||||
|
set(CMAKE_VS_GLOBALS
|
||||||
|
"CLToolExe=cl.exe"
|
||||||
|
"CLToolPath=${CMAKE_BINARY_DIR}"
|
||||||
|
"UseMultiToolTask=true"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(MSVC AND MSVC_PARALLEL_BUILD)
|
if(MSVC AND MSVC_PARALLEL_BUILD)
|
||||||
add_definitions("/MP")
|
add_definitions("/MP")
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
Reference in New Issue
Block a user