Проверка компиляции исходного кода C++
Проверить, компилируется ли данный исходный код C++ и может ли он быть связан с исполняемым файлом.
-
check_cxx_source_compiles -
check_cxx_source_compiles(code resultVar [FAIL_REGEX regex1 [regex2...]])
Проверить, что предоставленный в
codeисходный код может быть скомпилирован как C++-файл и связан с исполняемым файлом (то есть он должен содержать, по крайней мере, функциюmain()). Результат будет сохранён во внутренней переменной кэша, указанной вresultVar, с логическим значением true для успешной компиляции и логическим значением false для неудачи. ЕслиFAIL_REGEXпредоставлено, неудача определяется путём проверки, соответствует ли что-либо в выводе одному из указанных регулярных выражений.Основная проверка выполняется с помощью команды
try_compile(). Команды компиляции и компоновки можно настроить, установив одну из следующих переменных перед вызовомcheck_cxx_source_compiles():-
CMAKE_REQUIRED_FLAGS - Дополнительные флаги для передачи компилятору. Обратите внимание, что содержимое
CMAKE_CXX_FLAGSи его соответствующая переменная конфигурации автоматически добавляются к команде компилятора перед содержимымCMAKE_REQUIRED_FLAGS. -
CMAKE_REQUIRED_DEFINITIONS - Список определений компилятора в формате
-DFOOили-DFOO=bar. Определение для имени, указанного вresultVarтакже будет автоматически добавлено. -
CMAKE_REQUIRED_INCLUDES - Список путей поиска заголовков для передачи компилятору. Это будут единственные пути поиска заголовков, используемые командой
try_compile(), т.е. содержимое свойства директорииINCLUDE_DIRECTORIESбудет проигнорировано. -
CMAKE_REQUIRED_LIBRARIES - Список библиотек для добавления в команду компоновки. Это могут быть имена системных библиотек или Импортированные цели (см.
try_compile()для получения дополнительной информации). -
CMAKE_REQUIRED_QUIET - Если значение этой переменной равно логическому значению true, все сообщения о статусе, связанные с проверкой, будут подавлены.
Проверка выполняется только один раз, и результат кешируется в переменной, имя которой указано в
resultVar. Каждый последующий запуск CMake будет повторно использовать это кэшированное значение вместо повторного выполнения проверки, даже еслиcodeизменяется. Чтобы заставить переоценить проверку, переменная, имя которой указано вresultVar, должна быть удалена из кэша вручную. -
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.12/module/CheckCXXSourceCompiles.html