У меня есть ряд проектов, построенных с использованием CMake, и я хотел бы иметь возможность легко переключаться между GCC или Clang/LLVM для их компиляции. Я верю (пожалуйста, поправьте меня, если я ошибаюсь!), Что для использования Clang мне нужно установить следующее:
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")
Есть ли простой способ переключения между этими и переменными GCC по умолчанию, желательно как общесистемное изменение, а не специфическое для проекта (т.е. не просто добавить их в проект CMakeLists.txt)?
Кроме того, необходимо ли использовать программы llvm-*
, а не системные значения по умолчанию при компиляции с использованием clang вместо gcc? Какая разница?