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_OVERRIDE
karya. Tampaknya file tersebut diabaikan (yaitu meskipunCMAKE_C_FLAGS_RELEASE
diatur ke-O4
dalam file yang diganti, itu menunjukkan nilai default-O3 -DNDEBUG
dalam cmake).