CMake 3.1 से, Xcode जनरेटर के साथ ccache का उपयोग करना संभव है और निंजा CMake 3.4 पर से समर्थित है। निंजा RULE_LAUNCH_COMPILE
यूनिक्स मेकफाइल्स जनरेटर की तरह ही सम्मान करेगा (इसलिए @ बाबूल का जवाब आपको निंजा के लिए भी मिलता है), लेकिन एक्सकोड जनरेटर के लिए ccache काम करना थोड़ा अधिक काम करता है। निम्नलिखित लेख विस्तार से विधि की व्याख्या करता है, एक सामान्य कार्यान्वयन पर ध्यान केंद्रित करना जो सभी तीन सीएमके जनरेटर के लिए काम करता है और ccache symlinks या उपयोग किए गए अंतर्निहित संकलक को स्थापित करने के बारे में कोई धारणा नहीं बनाता है (यह अभी भी 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
यूनिक्स मेकफाइल्स और निंजा के लिए अकेले उपयोग करता है , लेकिन Xcode जनरेटर के लिए यह CMake के CMAKE_XCODE_ATTRIBUTE_...
चर समर्थन से मदद पर निर्भर करता है । की स्थापना CC
और CXX
उपयोगकर्ता परिभाषित Xcode संकलक कमान और नियंत्रण करने के लिए जिम्मेदार बताते हैं LD
और LDPLUSPLUS
लिंकर आदेश के लिए, जहाँ तक मैं बता सकता हूँ, Xcode परियोजनाओं की एक दस्तावेज सुविधा है, लेकिन यह काम करने के लिए प्रतीत होता है नहीं है। यदि कोई पुष्टि कर सकता है कि यह आधिकारिक तौर पर Apple द्वारा समर्थित है, तो मैं लिंक किए गए लेख और इस उत्तर को उसी के अनुसार अपडेट करूंगा।