CMake учитывает переменные среды CC
и CXX
при обнаружении компилятора C и C ++ для использования:
$ export CC=/usr/bin/clang
$ export CXX=/usr/bin/clang++
$ cmake ..
-- The C compiler identification is Clang
-- The CXX compiler identification is Clang
Флаги, специфичные для компилятора, могут быть переопределены путем помещения их в системный файл CMakeи указав на нее переменную CMAKE_USER_MAKE_RULES_OVERRIDE .Создайте файл ~/ClangOverrides.txt
со следующим содержимым:
SET (CMAKE_C_FLAGS_INIT "-Wall -std=c99")
SET (CMAKE_C_FLAGS_DEBUG_INIT "-g")
SET (CMAKE_C_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG")
SET (CMAKE_C_FLAGS_RELEASE_INIT "-O4 -DNDEBUG")
SET (CMAKE_C_FLAGS_RELWITHDEBINFO_INIT "-O2 -g")
SET (CMAKE_CXX_FLAGS_INIT "-Wall")
SET (CMAKE_CXX_FLAGS_DEBUG_INIT "-g")
SET (CMAKE_CXX_FLAGS_MINSIZEREL_INIT "-Os -DNDEBUG")
SET (CMAKE_CXX_FLAGS_RELEASE_INIT "-O4 -DNDEBUG")
SET (CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT "-O2 -g")
Суффикс _INIT заставит CMake инициализировать соответствующую переменную *_FLAGS
с заданным значением.Затем вызовите cmake следующим образом:
$ cmake -DCMAKE_USER_MAKE_RULES_OVERRIDE=~/ClangOverrides.txt ..
Наконец, чтобы принудительно использовать binutils LLVM, установите внутреннюю переменную _CMAKE_TOOLCHAIN_PREFIX
.Эта переменная учитывается модулем CMakeFindBinUtils
:
$ cmake -D_CMAKE_TOOLCHAIN_PREFIX=llvm- ..
Собрав все это вместе, вы можете написать оболочку оболочки, которая устанавливает переменные окружения CC
и CXX
, а затем вызывает cmake с указаннымпеременные переопределения.