Spec-Zone.ru › CMake

CheckTypeSize

Проверка размера типа

check_type_size
check_type_size(<type> <variable> [BUILTIN_TYPES_ONLY]
                                  [LANGUAGE <language>])

Проверяет существование типа и определяет его размер. Результаты записываются в следующие переменные:

HAVE_<variable>

Содержит значение true или false, указывающее, существует ли тип.

<variable>

Содержит одно из следующих значений:

<size>

Тип имеет размер, отличный от нуля <size>.

0

Тип имеет размер, зависящий от архитектуры. Это может произойти, когда CMAKE_OSX_ARCHITECTURES имеет несколько архитектур. В этом случае <variable>_CODE содержит тесты препроцессора C, сопоставляющие макросы каждой архитектуры с соответствующим размером типа. Список макросов архитектуры хранится в <variable>_KEYS, а значение для каждого ключа хранится в <variable>-<key>.

"" (пустая строка)

Тип не существует.

<variable>_CODE

Содержит код препроцессора C для определения макроса <variable> размером типа или для оставления макроса неопределённым, если тип не существует.

Доступные параметры:

BUILTIN_TYPES_ONLY

Поддерживаются только встроенные типы компилятора. Если этот параметр не указан, макрос проверяет заголовки <sys/types.h>, <stdint.h>, и <stddef.h>, и сохраняет результаты в HAVE_SYS_TYPES_H, HAVE_STDINT_H, и HAVE_STDDEF_H. Проверка размера типа автоматически включает доступные заголовки, тем самым поддерживая проверки типов, определённых в заголовках.

LANGUAGE <language>

Использовать компилятор <language> для выполнения проверки. Допустимые значения C и CXX.

Несмотря на название макроса, его можно использовать и для проверки размера более сложных выражений. Например, чтобы проверить размер члена структуры, можно сделать следующее:

check_type_size("((struct something*)0)->member" SIZEOF_MEMBER)

Следующие переменные можно установить перед вызовом этого макроса, чтобы изменить способ выполнения проверки:

CMAKE_REQUIRED_FLAGS

Строка дополнительных флагов, передаваемых компилятору. Строка должна быть разделена пробелами — ;-список не сработает. Содержимое CMAKE_<LANG>_FLAGS и его соответствующая переменная, специфичная для конфигурации, автоматически добавляются к команде компилятора перед содержимым CMAKE_REQUIRED_FLAGS.

CMAKE_REQUIRED_DEFINITIONS

;-список определений компилятора вида -DFOO или -DFOO=bar. Определение для имени, указанного в <resultVar>, также будет добавлено автоматически.

CMAKE_REQUIRED_INCLUDES

;-список путей поиска заголовков, передаваемых компилятору. Это будут единственные пути поиска заголовков — содержимое свойства каталога INCLUDE_DIRECTORIES будет проигнорировано.

CMAKE_REQUIRED_LINK_OPTIONS

Добавлен в версии 3.14.

;-список опций для добавления в команду линковки (см. try_compile() для получения дополнительной информации).

CMAKE_REQUIRED_LIBRARIES

;-список библиотек для добавления в команду линковки. Это могут быть имена системных библиотек или Импортированные цели (см. try_compile() для получения дополнительной информации).

CMAKE_REQUIRED_LINK_DIRECTORIES

Добавлен в версии 3.31.

;-список путей поиска библиотек для передачи линковщику (см. try_compile() для получения дополнительной информации).

CMAKE_REQUIRED_QUIET

Добавлен в версии 3.1.

Если эта переменная имеет булево значение true, все сообщения об ошибках, связанные с проверкой, будут подавлены.

CMAKE_EXTRA_INCLUDE_FILES

Список дополнительных заголовков для включения.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/module/CheckTypeSize.html

Spec-Zone.ru

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