added support ccache for xcode

This commit is contained in:
Andrei Yankovich 2023-04-15 13:47:54 +02:00
parent 6d28ccacbf
commit 6664d65e9f
4 changed files with 34 additions and 6 deletions

2
.gitignore vendored
View File

@ -9,3 +9,5 @@ compile_commands.json
CTestTestfile.cmake
.cmake
build.ninja
ccahe_cc_launcher.sh
ccahe_cxx_launcher.sh

View File

@ -21,17 +21,21 @@ if(CCACHE_PROGRAM)
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK "${CCACHE_PROGRAM}") # Less useful to do it for linking, see edit2
if(CMAKE_GENERATOR STREQUAL "Xcode")
set(CC_LAUNCHER ${CMAKE_CURRENT_LIST_DIR}/ccahe_cc_launcher.sh)
set(CXX_LAUNCHER ${CMAKE_CURRENT_LIST_DIR}/ccahe_cxx_launcher.sh)
configure_file("${CC_LAUNCHER}.in" "${CC_LAUNCHER}")
configure_file("${CXX_LAUNCHER}.in" "${CXX_LAUNCHER}")
# Set Xcode project attributes to route compilation and linking
# through our scripts
set(CMAKE_XCODE_ATTRIBUTE_CC "${CCACHE_PROGRAM} ${CMAKE_C_COMPILER}" CACHE INTERNAL "override CMAKE_XCODE_ATTRIBUTE_CC" )
set(CMAKE_XCODE_ATTRIBUTE_CXX "${CCACHE_PROGRAM} ${CMAKE_CXX_COMPILER}" CACHE INTERNAL "override CMAKE_XCODE_ATTRIBUTE_CC")
set(CMAKE_XCODE_ATTRIBUTE_LD "${CCACHE_PROGRAM} ${CMAKE_LD_COMPILER}" CACHE INTERNAL "override CMAKE_XCODE_ATTRIBUTE_CC")
set(CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS "${CCACHE_PROGRAM} ${CMAKE_LDPLUSPLUS_COMPILER}" CACHE INTERNAL "override CMAKE_XCODE_ATTRIBUTE_CC")
set(CMAKE_XCODE_ATTRIBUTE_CC ${CC_LAUNCHER} CACHE INTERNAL "override CMAKE_XCODE_ATTRIBUTE_CC" )
set(CMAKE_XCODE_ATTRIBUTE_CXX ${CXX_LAUNCHER} CACHE INTERNAL "override CMAKE_XCODE_ATTRIBUTE_CC")
message("CMAKE_XCODE_ATTRIBUTE_CC = ${CMAKE_XCODE_ATTRIBUTE_CC}")
message("CMAKE_XCODE_ATTRIBUTE_CXX = ${CMAKE_XCODE_ATTRIBUTE_CXX}")
message("CMAKE_XCODE_ATTRIBUTE_LD = ${CMAKE_XCODE_ATTRIBUTE_LD}")
message("CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS = ${CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS}")
endif()
endif()

11
ccahe_cc_launcher.sh.in Normal file
View File

@ -0,0 +1,11 @@
#!/bin/sh
# Xcode generator doesn't include the compiler as the
# first argument, Ninja and Makefiles do. Handle both cases.
if [ "$1" = "${CMAKE_C_COMPILER}" ] ; then
shift
fi
${CCCACHE_EXPORTS}
exec "${CCACHE_PROGRAM}" "${CMAKE_C_COMPILER}" "$@"

11
ccahe_cxx_launcher.sh.in Normal file
View File

@ -0,0 +1,11 @@
#!/bin/sh
# Xcode generator doesn't include the compiler as the
# first argument, Ninja and Makefiles do. Handle both cases.
if [ "$1" = "${CMAKE_CXX_COMPILER}" ] ; then
shift
fi
${CCCACHE_EXPORTS}
exec "${CCACHE_PROGRAM}" "${CMAKE_CXX_COMPILER}" "$@"