Проверка размера типа
Проверка размера типа
-
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.15/module/CheckTypeSize.html