Saya memiliki sejumlah proyek yang dibangun menggunakan CMake dan saya ingin dapat dengan mudah beralih antara menggunakan GCC atau Dentang / LLVM untuk mengkompilasinya. Saya percaya (tolong perbaiki saya jika saya salah!) Bahwa untuk menggunakan Dentang saya perlu mengatur yang berikut:
SET (CMAKE_C_COMPILER "/usr/bin/clang")
SET (CMAKE_C_FLAGS "-Wall -std=c99")
SET (CMAKE_C_FLAGS_DEBUG "-g")
SET (CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG")
SET (CMAKE_C_FLAGS_RELEASE "-O4 -DNDEBUG")
SET (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
SET (CMAKE_CXX_COMPILER "/usr/bin/clang++")
SET (CMAKE_CXX_FLAGS "-Wall")
SET (CMAKE_CXX_FLAGS_DEBUG "-g")
SET (CMAKE_CXX_FLAGS_MINSIZEREL "-Os -DNDEBUG")
SET (CMAKE_CXX_FLAGS_RELEASE "-O4 -DNDEBUG")
SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g")
SET (CMAKE_AR "/usr/bin/llvm-ar")
SET (CMAKE_LINKER "/usr/bin/llvm-ld")
SET (CMAKE_NM "/usr/bin/llvm-nm")
SET (CMAKE_OBJDUMP "/usr/bin/llvm-objdump")
SET (CMAKE_RANLIB "/usr/bin/llvm-ranlib")
Apakah ada cara mudah untuk beralih antara ini dan variabel GCC default, lebih disukai sebagai perubahan seluruh sistem daripada spesifik proyek (yaitu tidak hanya menambahkannya ke dalam CMakeLists.txt proyek)?
Juga, apakah perlu menggunakan llvm-*program daripada sistem default saat kompilasi menggunakan dentang bukan gcc? Apa bedanya?
CMAKE_USER_MAKE_RULES_OVERRIDEkarya. Tampaknya file tersebut diabaikan (yaitu meskipunCMAKE_C_FLAGS_RELEASEdiatur ke-O4dalam file yang diganti, itu menunjukkan nilai default-O3 -DNDEBUGdalam cmake).