CMake 3.1'den itibaren ccache'yi Xcode oluşturucu ile kullanmak mümkündür ve Ninja, CMake 3.4'ten itibaren desteklenir. Ninja onurlandıracakRULE_LAUNCH_COMPILE
, Unix Makefiles oluşturucu gibi (bu nedenle @ Babcool'un cevabı sizi Ninja için de oraya götürür), ancak Xcode oluşturucu için ccache'yi çalıştırmak biraz daha fazla iş gerektirir. Aşağıdaki makale, yöntemi ayrıntılı olarak açıklar, üç CMake oluşturucunun tümü için çalışan genel bir uygulamaya odaklanır ve ccache sembolik bağlarının veya kullanılan temel derleyicinin ayarlanması hakkında hiçbir varsayımda bulunmaz (yine de CMake'nin derleyiciye karar vermesine izin verir):
https://crascit.com/2016/04/09/using-ccache-with-cmake/
Makalenin genel özü aşağıdaki gibidir. CMakeLists.txt
Dosyanızın başlangıcı şu şekilde ayarlanmalıdır:
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()
İki komut dosyası şablon dosyası launch-c.in
ve buna launch-cxx.in
benzer (bunlar,CMakeLists.txt
dosya ile ):
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}" "$@"
Yukarıdakiler, RULE_LAUNCH_COMPILE
Unix Makefiles ve Ninja için tek başına kullanır , ancak Xcode oluşturucu için CMake'nin CMAKE_XCODE_ATTRIBUTE_...
değişken desteğinden gelen yardıma dayanır . Ayarı CC
ve CXX
kullanıcı tanımlı Xcode derleyici komutu ve kontrol etmek niteliklerini LD
ve LDPLUSPLUS
, bildiğim kadarıyla söyleyebilirim, Xcode projeleri belgelenmiş özelliği, ancak işe görünüyor değildir bağlayıcı komutu için. Apple tarafından resmi olarak desteklendiğini onaylayan biri varsa, bağlantılı makaleyi ve bu yanıtı buna göre güncelleyeceğim.