Ich habe eine Reihe von Projekten mit CMake erstellt und möchte in der Lage sein, einfach zwischen GCC oder Clang / LLVM zu wechseln, um sie zu kompilieren. Ich glaube (bitte korrigieren Sie mich, wenn ich mich irre!), Dass ich für die Verwendung von Clang Folgendes einstellen muss:
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")
Gibt es eine einfache Möglichkeit, zwischen diesen und den Standard-GCC-Variablen zu wechseln, vorzugsweise als systemweite Änderung und nicht als projektspezifisch (dh nicht nur zum Hinzufügen in die CMakeLists.txt eines Projekts)?
Ist es auch erforderlich, die llvm-*
Programme anstelle der Systemstandards zu verwenden, wenn mit clang anstelle von gcc kompiliert wird? Was ist der Unterschied?
CMAKE_USER_MAKE_RULES_OVERRIDE
Arbeiten befolgt . Es scheint, dass die Datei ignoriert wird (dh obwohlCMAKE_C_FLAGS_RELEASE
sie-O4
in der Überschreibungsdatei festgelegt ist, wird der Standardwert-O3 -DNDEBUG
in cmake angezeigt).