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.
Если эта переменная принимает значение логического значения true, все сообщения о статусе, связанные с проверкой, будут подавлены.
Например:
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/latest/module/CheckSymbolExists.html