CheckTypeSize
Проверка размера типа
-
check_type_size -
check_type_size(<type> <variable> [BUILTIN_TYPES_ONLY] [LANGUAGE <language>])Проверяет, существует ли тип, и определяет его размер. Результаты выводятся в следующих переменных:
-
HAVE_<variable> -
Содержит значение «истина» или «ложь», указывающее на существование типа.
-
<variable> -
Содержит одно из следующих значений:
-
<size> -
Тип имеет размер, отличный от нуля
<size>. -
0 -
Тип имеет размер, зависящий от архитектуры. Это может произойти, когда
CMAKE_OSX_ARCHITECTURESимеет несколько архитектур. В этом случае<variable>_CODEсодержит тесты препроцессора C, сопоставляющие каждый макрос архитектуры соответствующему размеру типа. Список макросов архитектуры хранится в<variable>_KEYS, а значение для каждого ключа хранится в<variable>-<key>. - "" (пустая строка)
-
Тип не существует.
-
-
<variable>_CODE -
Содержит код препроцессора C для определения макроса
<variable>размером типа или для оставления макроса неопределённым, если тип не существует.
Опции:
BUILTIN_TYPES_ONLYПоддерживаются только встроенные типы компилятора. Если не указано, макрос проверяет заголовки
<sys/types.h>,<stdint.h>, и<stddef.h>, и сохраняет результаты вHAVE_SYS_TYPES_H,HAVE_STDINT_H, иHAVE_STDDEF_H. Проверка размера типа автоматически включает доступные заголовки, тем самым поддерживая проверки типов, определённых в заголовках.-
LANGUAGE <language> -
Использовать компилятор
<language>для выполнения проверки. Допустимые значенияCиCXX.
-
Несмотря на название макроса, его также можно использовать для проверки размера более сложных выражений. Например, для проверки размера члена структуры можно сделать следующее:
check_type_size("((struct something*)0)->member" SIZEOF_MEMBER)
Перед вызовом этого макроса могут быть установлены следующие переменные, чтобы изменить способ выполнения проверки:
-
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_QUIET -
Добавлена в версии 3.1.
Если эта переменная имеет логическое значение «истина», все сообщения об ошибках, связанные с проверкой, будут подавлены.
-
CMAKE_EXTRA_INCLUDE_FILES -
список дополнительных заголовков для включения.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/module/CheckTypeSize.html