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.20/module/CheckTypeSize.html