CheckSymbolExists
Предоставляет макрос для проверки существования символа в виде функции, переменной или макроса в C.
-
check_symbol_exists -
check_symbol_exists(<symbol> <files> <variable>)
Проверяет доступность
<symbol>после включения заданного заголовка<files>и сохраняет результат в<variable>. Укажите список файлов в качестве одного аргумента, разделённого точкой с запятой.<variable>будет создан как внутренняя переменная кэша.
Если файлы заголовков определяют символ как макрос, он считается доступным и предполагается, что он работает. Если файлы заголовков объявляют символ как функцию или переменную, то символ также должен быть доступен для линковки (так что встроенные функции могут не обнаруживаться). Если символ представляет собой тип, значение перечисления или встроенную функцию, он не будет распознан (рассмотрите использование CheckTypeSize или CheckSourceCompiles). Если проверка должна быть выполнена в C++, используйте CheckCXXSymbolExists вместо этого.
Следующие переменные могут быть установлены перед вызовом этого макроса для изменения способа выполнения проверки:
-
CMAKE_REQUIRED_FLAGS -
Строка дополнительных флагов для передачи компилятору. Строка должна быть разделена пробелами – ;-список не будет работать. Содержимое
CMAKE_<LANG>_FLAGSи его соответствующая переменная, специфичная для конфигурации, автоматически добавляются к команде компилятора перед содержимымCMAKE_REQUIRED_FLAGS.
-
CMAKE_REQUIRED_DEFINITIONS -
;-список определений компилятора в формате
-DFOOили-DFOO=bar. Определение для имени, указанного в<resultVar>, также будет автоматически добавлено.
-
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.
Если эта переменная имеет значение булево «истина», все сообщения об успехе, связанные с проверкой, будут подавлены.
Например:
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)
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.31/module/CheckSymbolExists.html