Spec-Zone.ru › CMake 3.21

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API