Spec-Zone.ru › CMake 3.5

try_compile

  • Попытка скомпилировать целые проекты
  • Попытка скомпилировать исходные файлы
  • Другие параметры поведения

Попробуйте собрать какой-то код.

Попытка скомпилировать целые проекты

try_compile(RESULT_VAR <bindir> <srcdir>
            <projectName> [<targetName>] [CMAKE_FLAGS <flags>...]
            [OUTPUT_VARIABLE <var>])

Попробуйте собрать проект. Успех или неудача try_compile, т.е. TRUE или FALSE соответственно, возвращается в RESULT_VAR.

В этом формате <srcdir> должен содержать полный проект CMake с файлом CMakeLists.txt и всеми исходными файлами. Файлы <bindir> и <srcdir> не будут удалены после выполнения этой команды. Укажите <targetName>, чтобы собрать конкретную цель вместо цели all или ALL_BUILD. Значения других параметров см. ниже.

Попытка скомпилировать исходные файлы

try_compile(RESULT_VAR <bindir> <srcfile|SOURCES srcfile...>
            [CMAKE_FLAGS <flags>...]
            [COMPILE_DEFINITIONS <defs>...]
            [LINK_LIBRARIES <libs>...]
            [OUTPUT_VARIABLE <var>]
            [COPY_FILE <fileName> [COPY_FILE_ERROR <var>]])

Попробуйте скомпилировать исполняемый файл из одного или нескольких исходных файлов. Успех или неудача try_compile, т.е. TRUE или FALSE соответственно, возвращается в RESULT_VAR.

В этом формате пользователю необходимо предоставить один или несколько исходных файлов, которые содержат определение для main. CMake создаст файл CMakeLists.txt для сборки исходных файлов в исполняемый файл, который будет выглядеть примерно так:

add_definitions(<expanded COMPILE_DEFINITIONS from caller>)
include_directories(${INCLUDE_DIRECTORIES})
link_directories(${LINK_DIRECTORIES})
add_executable(cmTryCompileExec <srcfile>...)
target_link_libraries(cmTryCompileExec ${LINK_LIBRARIES})

Параметры:

CMAKE_FLAGS <flags>...
Укажите флаги в формате -DVAR:TYPE=VALUE, которые нужно передать команде cmake командной строки, используемой для запуска сборки теста. Приведенный выше пример показывает, как используются значения переменных INCLUDE_DIRECTORIES, LINK_DIRECTORIES, и LINK_LIBRARIES.
COMPILE_DEFINITIONS <defs>...
Укажите аргументы -Ddefinition для передачи в add_definitions в сгенерированном проекте теста.
COPY_FILE <fileName>
Скопируйте связанный исполняемый файл в указанный <fileName>.
COPY_FILE_ERROR <var>
Используйте после COPY_FILE, чтобы записать в переменную <var> любое сообщение об ошибке, которое возникло при попытке скопировать файл.
LINK_LIBRARIES <libs>...

Укажите библиотеки, которые нужно связать в сгенерированном проекте. Список библиотек может ссылаться на системные библиотеки и на Импортированные цели из вызывающего проекта.

Если этот параметр указан, любое значение -DLINK_LIBRARIES=... для параметра CMAKE_FLAGS будет проигнорировано.

OUTPUT_VARIABLE <var>
Сохраните вывод процесса сборки в указанной переменной.

В этой версии все файлы в <bindir>/CMakeFiles/CMakeTmp будут очищены автоматически. Для отладки можно передать --debug-trycompile в cmake, чтобы избежать этого удаления. Однако несколько последовательных операций try_compile повторно используют эту единственную выходную директорию. Если вы используете --debug-trycompile, вы можете отладить только один вызов try_compile за раз. Рекомендуемая процедура заключается в защите всех вызовов try_compile в вашем проекте логикой if(NOT DEFINED RESULT_VAR), настроить с помощью cmake полностью один раз, затем удалить запись кеша, связанную с вызовом try_compile, который вас интересует, и затем снова запустить cmake с --debug-trycompile.

Другие параметры поведения

Если установлены, следующие переменные передаются в сгенерированный try_compile CMakeLists.txt для инициализации свойств целевой сборки значениями по умолчанию:

  • CMAKE_ENABLE_EXPORTS
  • CMAKE_LINK_SEARCH_START_STATIC
  • CMAKE_LINK_SEARCH_END_STATIC
  • CMAKE_POSITION_INDEPENDENT_CODE

Если CMP0056 установлено в NEW, то CMAKE_EXE_LINKER_FLAGS также передается.

Текущее значение CMP0065 устанавливается в сгенерированном проекте.

Установите переменную CMAKE_TRY_COMPILE_CONFIGURATION, чтобы выбрать конфигурацию сборки.

© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.5/command/try_compile.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API