CMake 3.1에서는 Xcode 생성기와 함께 ccache를 사용할 수 있으며 Ninja는 CMake 3.4부터 지원됩니다. Ninja는 RULE_LAUNCH_COMPILE
Unix Makefiles 생성기처럼 존경 할 것입니다 (따라서 @Babcool의 답변은 Ninja도 제공합니다).하지만 Xcode 생성기에서 ccache가 작동하려면 약간의 작업이 필요합니다. 다음 문서에서는 세 가지 CMake 생성기 모두에서 작동하는 일반 구현에 초점을 맞추고 사용 된 ccache 심볼릭 링크 또는 기본 컴파일러 설정에 대해 가정하지 않고 메서드를 자세히 설명합니다 (CMake가 컴파일러를 결정할 수 있도록 함).
https://crascit.com/2016/04/09/using-ccache-with-cmake/
기사의 일반적인 요점은 다음과 같습니다. CMakeLists.txt
파일 시작은 다음과 같이 설정해야합니다.
cmake_minimum_required(VERSION 2.8)
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
# Support Unix Makefiles and Ninja
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
endif()
project(SomeProject)
get_property(RULE_LAUNCH_COMPILE GLOBAL PROPERTY RULE_LAUNCH_COMPILE)
if(RULE_LAUNCH_COMPILE AND CMAKE_GENERATOR STREQUAL "Xcode")
# Set up wrapper scripts
configure_file(launch-c.in launch-c)
configure_file(launch-cxx.in launch-cxx)
execute_process(COMMAND chmod a+rx
"${CMAKE_BINARY_DIR}/launch-c"
"${CMAKE_BINARY_DIR}/launch-cxx")
# Set Xcode project attributes to route compilation through our scripts
set(CMAKE_XCODE_ATTRIBUTE_CC "${CMAKE_BINARY_DIR}/launch-c")
set(CMAKE_XCODE_ATTRIBUTE_CXX "${CMAKE_BINARY_DIR}/launch-cxx")
set(CMAKE_XCODE_ATTRIBUTE_LD "${CMAKE_BINARY_DIR}/launch-c")
set(CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS "${CMAKE_BINARY_DIR}/launch-cxx")
endif()
두 개의 스크립트 템플릿 파일은 다음과 같습니다 ( 파일 launch-c.in
과 launch-cxx.in
동일한 디렉토리에 있어야 함 CMakeLists.txt
).
launch-c.in :
#!/bin/sh
export CCACHE_CPP2=true
exec "${RULE_LAUNCH_COMPILE}" "${CMAKE_C_COMPILER}" "$@"
launch-cxx.in :
#!/bin/sh
export CCACHE_CPP2=true
exec "${RULE_LAUNCH_COMPILE}" "${CMAKE_CXX_COMPILER}" "$@"
위는 RULE_LAUNCH_COMPILE
Unix Makefiles 및 Ninja에만 사용 되지만 Xcode 생성기의 경우 CMake의 CMAKE_XCODE_ATTRIBUTE_...
변수 지원 의 도움에 의존합니다 . 의 설정 CC
및 CXX
사용자 정의는 엑스 코드는 컴파일러 명령 및 제어하는 속성 LD
과 LDPLUSPLUS
, 지금까지 내가 말할 수있는, 엑스 코드 프로젝트의 문서화 기능이 있지만,이 작업에 보인다되지 링커 명령을. 누구든지 Apple에서 공식적으로 지원한다는 것을 확인할 수 있다면 링크 된 기사 와이 답변을 그에 따라 업데이트 할 것입니다.