Spec-Zone.ru › CMake

export

Экспортирует целевые объекты или пакеты для использования в сторонних проектах напрямую из дерева сборки текущего проекта без установки.

См. команду install(EXPORT) для экспорта целевых объектов из дерева установки.

Синтаксис

export(TARGETS <target>... [...])
export(EXPORT <export-name> [...])
export(PACKAGE <PackageName>)
export(SETUP <export-name> [...])

Экспорт целевых объектов

export(TARGETS <target>... [...])
export(TARGETS <target>... [NAMESPACE <namespace>]
       [APPEND] FILE <filename> [EXPORT_LINK_INTERFACE_LIBRARIES]
       [CXX_MODULES_DIRECTORY <directory>])

Создаёт файл <filename>, который может быть включён сторонними проектами для импорта целевых объектов, указанных через <target>... из дерева сборки текущего проекта. Это полезно при кросс-компиляции для построения служебных исполняемых файлов, которые могут выполняться на платформе хоста в одном проекте, а затем импортироваться в другой проект, компилируемый для целевой платформы.

Создаваемый этой командой файл специфичен для дерева сборки и никогда не должен устанавливаться. См. команду install(EXPORT) для экспорта целевых объектов из дерева установки.

Опции:

NAMESPACE <namespace>

Добавляет строку <namespace> в начало всех имён целевых объектов, записанных в файл.

APPEND

Добавляет содержимое в файл вместо перезаписи. Это можно использовать для поэтапного экспорта нескольких целевых объектов в один файл.

EXPORT_LINK_INTERFACE_LIBRARIES

Включает содержимое свойств, имена которых соответствуют шаблону (IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)? в экспорте, даже когда политика CMP0022 имеет значение NEW. Это полезно для поддержки потребителей, использующих версии CMake, более ранние чем 2.8.12.

CXX_MODULES_DIRECTORY <directory>

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

Экспортирует свойства модулей C++ в файлы в заданном каталоге. Каждый файл будет именоваться в соответствии с именем экспорта целевого объекта (без любого имени пространства имён). Эти файлы будут автоматически включены из файла экспорта.

Этот синтаксис требует явного перечисления всех целевых объектов. Если целевой объект библиотеки включён в экспорт, но целевой объект, к которому он ссылается, не включён, поведение не определено. См. синтаксис export(EXPORT) для автоматического экспорта тех же целевых объектов из дерева сборки, что и install(EXPORT) из дерева установки.

Примечание

Библиотеки объектов в Xcode имеют специальную обработку, если в CMAKE_OSX_ARCHITECTURES указано несколько архитектур. В этом случае они будут экспортированы как Интерфейсные библиотеки без доступных клиентам файлов объектов. Этого достаточно для удовлетворения требований транзитивного использования других целевых объектов, которые ссылаются на библиотеки объектов в своей реализации.

Эта команда экспортирует все Конфигурации сборки из дерева сборки. См. переменную CMAKE_MAP_IMPORTED_CONFIG_<CONFIG> для сопоставления конфигураций зависимых проектов с экспортированными конфигурациями.

Экспорт целевых объектов в Android.mk

export(TARGETS <target>... ANDROID_MK <filename>)

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

Этот синтаксис экспортирует скомпилированные с помощью cmake целевые объекты в систему сборки android ndk, создавая файл Android.mk , который ссылается на предварительно скомпилированные целевые объекты. Android NDK поддерживает использование предварительно скомпилированных библиотек, как статических, так и динамических. Это позволяет cmake компилировать библиотеки проекта и сделать их доступными для системы сборки ndk, включая транзитивные зависимости, флаги включения и определения, необходимые для использования библиотек. Синтаксис принимает список целевых объектов и помещает их в файл Android.mk , указанный в <filename> . Этот синтаксис можно использовать только если политика CMP0022 имеет значение NEW для всех указанных целевых объектов. Если для одного из целевых объектов политика установлена в OLD, будет выдано сообщение об ошибке.

Экспорт целевых объектов, соответствующих install(EXPORT)

export(EXPORT<export-name>[...])
export(EXPORT <export-name> [NAMESPACE <namespace>] [FILE <filename>]
       [CXX_MODULES_DIRECTORY <directory>] [EXPORT_PACKAGE_DEPENDENCIES])

Создаёт файл <filename> , который может быть включён сторонними проектами для импорта целевых объектов из дерева сборки текущего проекта. Это то же самое, что и синтаксис export(TARGETS), за исключением того, что целевые объекты не перечисляются явно. Вместо этого он экспортирует целевые объекты, связанные с экспортом установки <export-name>. Установки целевых объектов могут быть связаны с экспортом <export-name> с помощью опции EXPORT команды install(TARGETS).

EXPORT_PACKAGE_DEPENDENCIES

Примечание

Экспериментально. Управляется CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_DEPENDENCIES.

Указывает, что вызовы find_dependency() должны быть экспортированы. Подробности о работе с этим см. в install(EXPORT).

Экспорт пакетов

export(PACKAGE <PackageName>)
export(PACKAGE <PackageName>)

Сохраняет текущий каталог сборки в реестре пакетов пользователя CMake для пакета <PackageName>. Команда find_package() может учитывать этот каталог при поиске пакета <PackageName>. Это помогает зависимым проектам находить и использовать пакет из дерева сборки текущего проекта без помощи пользователя. Обратите внимание, что запись в реестре пакетов, созданная этой командой, работает только в сочетании с файлом конфигурации пакета (<PackageName>Config.cmake), который работает с деревом сборки. В некоторых случаях, например, для упаковки и для системных установок, нежелательно записывать в реестр пакетов пользователя.

Изменено в версии 3.1: Если переменная CMAKE_EXPORT_NO_PACKAGE_REGISTRY включена, команда export(PACKAGE) ничего не делает.

Изменено в версии 3.15: По умолчанию команда export(PACKAGE) ничего не делает (см. политику CMP0090), потому что заполнение реестра пакетов пользователя имеет последствия за пределами дерева исходных файлов и дерева сборки. Установите переменную CMAKE_EXPORT_PACKAGE_REGISTRY, чтобы добавить каталоги сборки в реестр пакетов пользователя CMake.

Настройка экспортов

export(SETUP <export-name> [...])
export(SETUP <export-name>
       [PACKAGE_DEPENDENCY <dep>
        [ENABLED (<bool-true>|<bool-false>|AUTO)]
        [EXTRA_ARGS <args>...]
       ] [...]
       [TARGET <target>
        [XCFRAMEWORK_LOCATION <location>]
       ] [...]
       )

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

Настройте параметры экспорта. Аргументы следующие:

PACKAGE_DEPENDENCY <dep>

Примечание

Экспериментальная функция. Закрыта CMAKE_EXPERIMENTAL_EXPORT_PACKAGE_DEPENDENCIES.

Укажите зависимость пакета для настройки. Это изменяет то, как find_dependency() вызывается во время export(EXPORT) и install(EXPORT). <dep> — это имя пакета для экспорта. Этот аргумент принимает следующие дополнительные аргументы:

ENABLED

Вручную управляет экспортом зависимости. Принимает следующие значения:

<bool-true>

Любое значение, которое CMake распознаёт как "истина". Всегда экспортирует зависимость, даже если на неё не полагаются экспортируемые цели. Это можно использовать для добавления вызовов find_dependency() в экспорт.

<bool-false>

Любое значение, которое CMake распознаёт как "ложь". Никогда не экспортирует зависимость, даже если на неё полагается экспортируемая цель.

AUTO

Экспортировать зависимость только если на неё полагается экспортируемая цель.

EXTRA_ARGS <args>

Укажите дополнительные аргументы для передачи в find_dependency() после аргумента REQUIRED.

TARGET <target>

Укажите цель для настройки в этом экспорте. Этот аргумент принимает следующие дополнительные аргументы:

XCFRAMEWORK_LOCATION

Укажите расположение .xcframework, содержащего библиотеку из этой цели. Если указано, сгенерированный код проверит, существует ли .xcframework, и если да, то он будет использовать .xcframework в качестве импортированного расположения вместо установленной библиотеки.

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

Spec-Zone.ru

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