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 = string of compile command line flags CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar) CMAKE_REQUIRED_INCLUDES = list of include directories CMAKE_REQUIRED_LINK_OPTIONS = list of options to pass to link command CMAKE_REQUIRED_LIBRARIES = list of libraries to link CMAKE_REQUIRED_QUIET = execute quietly without messages CMAKE_EXTRA_INCLUDE_FILES = list of extra headers to include
© 2000–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.16/module/CheckTypeSize.html