Как в Cmake
проверить, существует ли компилятор, и если это правда, то выбрать его? Или какая-то функция для ручной установки желаемого компилятора и его цепочки инструментов внутри CMakeLists.txt, без внешних переменных env и дополнительных файлов цепочки инструментов/аргументов cmake? Какой-то правильный способ?
Что-то вроде:
if (find_compiler("clang"))
set(CMAKE_C_COMPILER "clang")
set(CMAKE_CXX_COMPILER "clang++")
Но будет ли он автоматически правильно устанавливать другие переменные инструментальной цепочки и т. д.? Также я нашел устаревший модуль Cmake CMakeForceCompiler
, который выглядит именно так, как я хочу, но, как я уже сказал, он устарел, и в моей версии CMake
этого модуля не существует.
если вы хотите установить его вручную:
При обнаружении компиляторов C и C++ он ищет переменные CC и CXX. Установите путь clang к переменным среды CC и CXX.
export CC=/usr/bin/clang
export CXX=/usr/bin/clang++
cmake ..
cmake_minimum_required(VERSION 3.1)
project(test)
find_program(CLANG_CXX_PATH clang++)
if (CLANG_CXX_PATH)
set(CMAKE_CXX_COMPILER "clang++" CACHE INTERNAL "")
message("Clang Found")
else()
message("Clang not Found.")
endif ()
Вы можете посмотреть флаги clang, добавить их с помощью find_program и проверить.
мне нужно поместить его перед проектом() в CMakeLists.txt или после? А еще небольшой вопрос: будут ли find_program(CLANG_CXX_PATH clang++)
и find_program(CLANG_CXX_PATH "clang++")
разными?
Я отредактировал код более подробно. Ответ на второй вопрос: использование кавычек делает код более безопасным. (По крайней мере, так кажется)
Мне нужно сделать это внутри CMakeLists.txt, без ручного изменения внешних переменных окружения.