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