CheckTypeSize
Проверка размера типа
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_LIBRARIES = list of libraries to link CMAKE_REQUIRED_QUIET = execute quietly without messages CMAKE_EXTRA_INCLUDE_FILES = list of extra headers to include
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.5/module/CheckTypeSize.html