J'ai un certain nombre de projets construits en utilisant CMake et j'aimerais pouvoir basculer facilement entre l'utilisation de GCC ou Clang / LLVM pour les compiler. Je crois (veuillez me corriger si je me trompe!) Que pour utiliser Clang, je dois définir ce qui suit:
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")
Existe-t-il un moyen facile de basculer entre ces variables et les variables GCC par défaut, de préférence en tant que modification à l'échelle du système plutôt que spécifique au projet (c'est-à-dire pas simplement en les ajoutant dans CMakeLists.txt d'un projet)?
De plus, est-il nécessaire d'utiliser les llvm-*
programmes plutôt que les valeurs par défaut du système lors de la compilation en utilisant clang au lieu de gcc? Quelle est la différence?
CMAKE_USER_MAKE_RULES_OVERRIDE
travaux. Il semble que le fichier soit ignoré (c'est-à-dire bien qu'ilCMAKE_C_FLAGS_RELEASE
soit défini-O4
dans le fichier de remplacement, il affiche la valeur par défaut de-O3 -DNDEBUG
in cmake).