Spec-Zone.ru › CMake 3.31

экспорт

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

См. команду 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/v3.31/command/export.html

Spec-Zone.ru

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