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/v3.30/command/export.html