Spec-Zone.ru › CMake

CheckSymbolExists

Этот модуль предоставляет команду для проверки наличия символа C.

Загрузите этот модуль в проекте CMake с помощью:

include(CheckSymbolExists)

Команды

Этот модуль предоставляет следующую команду:

check_symbol_exists

Проверяет один раз, существует ли символ в C как функция, переменная или макрос препроцессора:

check_symbol_exists(<symbol> <headers> <variable>)

Эта команда проверяет, доступен ли <symbol> после включения указанных заголовочных файлов <headers>, и сохраняет результат во внутренней переменной кэша <variable>. Несколько заголовочных файлов можно указать в одном аргументе в виде строки, используя список, разделённый точками с запятой.

Если заголовочные файлы определяют символ как макрос, он считается доступным и предполагается, что он работает. Если символ объявлен как функция или переменная, проверка также убеждается, что его удаётся связать (то есть символ должен существовать в связываемой библиотеке или объектном файле). Встроенные функции компилятора могут быть не обнаружены, поскольку их не всегда можно связать или они не всегда явно объявлены в заголовочных файлах.

Символы, представляющие типы, значения перечислений или встроенные функции компилятора, не распознаются. Для них можно использовать модуль CheckTypeSize или CheckSourceCompiles.

Эта команда предназначена для проверки символов в том виде, в котором они используются в C. Для символов C++ используйте модуль CheckCXXSymbolExists.

Переменные, влияющие на проверку

Перед вызовом этой команды можно задать следующие переменные, чтобы изменить способ выполнения проверки:

CMAKE_REQUIRED_FLAGS

Строка с дополнительными флагами, разделёнными пробелами, которые передаются компилятору. Список, разделённый точками с запятой, использовать нельзя. Содержимое CMAKE_<LANG>_FLAGS и соответствующих переменных CMAKE_<LANG>_FLAGS_<CONFIG>, специфичных для конфигурации, автоматически добавляется в начало команды компилятора перед содержимым этой переменной.

CMAKE_REQUIRED_DEFINITIONS

Список, разделённый точками с запятой, содержащий определения компилятора в форме -DFOO или -DFOO=bar. Определение для имени, указанного в аргументе команды проверки в качестве переменной результата, также добавляется автоматически.

CMAKE_REQUIRED_INCLUDES

Список, разделённый точками с запятой, содержащий пути поиска заголовочных файлов, которые передаются компилятору. Используются только эти пути поиска заголовочных файлов; содержимое свойства каталога INCLUDE_DIRECTORIES игнорируется.

CMAKE_REQUIRED_LINK_OPTIONS

Добавлено в версии 3.14.

Список, разделённый точками с запятой, содержащий параметры, добавляемые в команду компоновки (дополнительные сведения см. в описании try_compile()).

CMAKE_REQUIRED_LIBRARIES

Список, разделённый точками с запятой, содержащий библиотеки, добавляемые в команду компоновки. Это могут быть имена системных библиотек или импортированные цели (дополнительные сведения см. в описании try_compile()).

CMAKE_REQUIRED_LINK_DIRECTORIES

Добавлено в версии 3.31.

Список, разделённый точками с запятой, содержащий пути поиска библиотек, которые передаются компоновщику (дополнительные сведения см. в описании try_compile()).

CMAKE_REQUIRED_QUIET

Добавлено в версии 3.1.

Если значение этой переменной является логическим значением true, все сообщения о состоянии, связанные с проверкой, будут подавлены.

Примеры

В следующем примере показано, как с помощью этого модуля проверить наличие макроса препроцессора SEEK_SET и функции C fopen() из заголовочного файла <stdio.h>:

include(CheckSymbolExists)

# Check for macro SEEK_SET
check_symbol_exists(SEEK_SET "stdio.h" HAVE_SEEK_SET)

# Check for function fopen
check_symbol_exists(fopen "stdio.h" HAVE_FOPEN)

См. также

  • Модуль CheckCXXSymbolExists для проверки наличия символа C++.

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/module/CheckSymbolExists.html

Spec-Zone.ru

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