CMake kullanarak bir dizi projem var ve bunları derlemek için GCC veya Clang / LLVM kullanma arasında kolayca geçiş yapabilmek istiyorum. Clang kullanmak için aşağıdakileri ayarlamam gerektiğine inanıyorum (lütfen yanılıyorsam beni düzeltin!):
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")
Bunlar ve varsayılan GCC değişkenleri arasında, özellikle projeye özgü olmaktan ziyade sistem çapında bir değişiklik olarak geçiş yapmanın kolay bir yolu var mıdır (yani, bunları yalnızca bir projenin CMakeLists.txt dosyasına eklemek değil)?
Ayrıca, llvm-*
gcc yerine clang kullanarak derleme yaparken sistem varsayılanları yerine programları kullanmak gerekli midir? Fark ne?
CMAKE_USER_MAKE_RULES_OVERRIDE
eserler hariç her şeyi takip ettim . Dosya yoksayılıyor gibi görünüyor (yani geçersiz kılmalar dosyasındaCMAKE_C_FLAGS_RELEASE
ayarlanmış olmasına rağmen , cmake içinde-O4
varsayılan değerini gösteriyor-O3 -DNDEBUG
).