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