Spec-Zone.ru › CMake 3.7

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

Spec-Zone.ru

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