CheckTypeSize
Проверка размера типа
-
CHECK_TYPE_SIZE -
CHECK_TYPE_SIZE(TYPE VARIABLE [BUILTIN_TYPES_ONLY] [LANGUAGE <language>])Проверяет, существует ли тип, и определяет его размер. По возвращении
HAVE_${VARIABLE}хранит информацию о существовании типа, а${VARIABLE}содержит одно из следующих значений:<size> = type has non-zero size <size> "0" = type has arch-dependent size (see below) "" = type does not exist
И
HAVE_${VARIABLE}и${VARIABLE}будут созданы как внутренние переменные кэша.Кроме того, переменная
${VARIABLE}_CODEсодержит код препроцессора C для определения макроса${VARIABLE}размером типа или оставления макроса неопределённым, если тип не существует.Переменная
${VARIABLE}может быть0, когдаCMAKE_OSX_ARCHITECTURESимеет несколько архитектур для построения универсальных библиотек OS X. Это указывает на то, что размер типа варьируется в зависимости от архитектуры. В этом случае${VARIABLE}_CODEсодержит тесты препроцессора C, сопоставляющие макрос каждой архитектуры с соответствующим размером типа. Список макросов архитектуры хранится в${VARIABLE}_KEYS, а значение для каждого ключа хранится в${VARIABLE}-${KEY}.Если опция
BUILTIN_TYPES_ONLYне указана, макрос проверяет заголовки<sys/types.h>,<stdint.h>, и<stddef.h>, и сохраняет результаты вHAVE_SYS_TYPES_H,HAVE_STDINT_H, иHAVE_STDDEF_H. Проверка размера типа автоматически включает доступные заголовки, тем самым поддерживая проверку типов, определённых в заголовках.Если
LANGUAGEустановлено, для выполнения проверки будет использован указанный компилятор. Допустимые значения —CиCXX.
Несмотря на название макроса, вы можете использовать его для проверки размера более сложных выражений. Например, чтобы проверить размер члена структуры, можно сделать так:
check_type_size("((struct something*)0)->member" SIZEOF_MEMBER)
Следующие переменные можно установить перед вызовом этого макроса для изменения способа выполнения проверки:
-
CMAKE_REQUIRED_FLAGS -
строка флагов командной строки компилятора.
-
CMAKE_REQUIRED_DEFINITIONS -
список макросов для определения (-DFOO=bar).
-
CMAKE_REQUIRED_INCLUDES -
список директорий включения.
-
CMAKE_REQUIRED_LINK_OPTIONS -
Новое в версии 3.14: список опций для передачи команде компоновки.
-
CMAKE_REQUIRED_LIBRARIES -
список библиотек для компоновки.
-
CMAKE_REQUIRED_QUIET -
Новое в версии 3.1: выполнять тихо без сообщений.
-
CMAKE_EXTRA_INCLUDE_FILES -
список дополнительных заголовков для включения.
© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.22/module/CheckTypeSize.html