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