export
Экспорт целевых объектов или пакетов для использования в сторонних проектах напрямую из дерева сборки текущего проекта без установки.
См. команду install(EXPORT) для экспорта целевых объектов из дерева установки.
Резюме
export(TARGETS <target>... [...]) export(EXPORT <export-name> [...]) export(PACKAGE <PackageName>)
Экспорт целевых объектов
export(TARGETS <target>... [NAMESPACE <namespace>]
[APPEND] FILE <filename> [EXPORT_LINK_INTERFACE_LIBRARIES])
Создаёт файл <filename>, который может быть включён сторонними проектами для импорта целевых объектов, указанных <target>..., из дерева сборки текущего проекта. Это полезно при кросс-компиляции для создания служебных исполняемых файлов, которые могут работать на платформе хоста в одном проекте, а затем импортировать их в другой проект, компилируемый для целевой платформы.
Файл, созданный этой командой, специфичен для дерева сборки и никогда не должен устанавливаться. См. команду install(EXPORT) для экспорта целевых объектов из дерева установки.
Доступны следующие параметры:
-
NAMESPACE <namespace> -
Добавляет строку
<namespace>в начало всех имён целевых объектов, записываемых в файл. -
APPEND -
Добавляет данные в конец файла вместо перезаписи. Это можно использовать для поэтапного экспорта нескольких целевых объектов в один и тот же файл.
-
EXPORT_LINK_INTERFACE_LIBRARIES -
Включает в экспорт содержимое свойств, имена которых соответствуют шаблону
(IMPORTED_)?LINK_INTERFACE_LIBRARIES(_<CONFIG>)?, даже если политикаCMP0022имеет значение NEW. Это полезно для поддержки потребителей, использующих версии CMake, более ранние чем 2.8.12.
Эта подпись требует явного перечисления всех целевых объектов. Если целевой объект библиотеки включён в экспорт, но целевой объект, на который он ссылается, не включён, поведение не определено. См. подпись export(EXPORT) для автоматического экспорта тех же целевых объектов из дерева сборки, что и команда install(EXPORT) из дерева установки.
Примечание
Библиотеки объектов в Xcode имеют специальную обработку, если в CMAKE_OSX_ARCHITECTURES указано несколько архитектур. В этом случае они будут экспортированы как Интерфейсные библиотеки без доступных файлов объектов для клиентов. Это достаточно для удовлетворения требований транзитивного использования других целевых объектов, которые ссылаются на библиотеки объектов в своей реализации.
Экспорт целевых объектов в 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> [NAMESPACE <namespace>] [FILE <filename>])
Создаёт файл <filename>, который может быть включён сторонними проектами для импорта целевых объектов из дерева сборки текущего проекта. Это эквивалентно подписи export(TARGETS), за исключением того, что целевые объекты не перечисляются явно. Вместо этого экспортируются целевые объекты, связанные с экспортом установки <export-name>. Целевые установки могут быть связаны с экспортом <export-name> с помощью параметра EXPORT команды install(TARGETS).
Экспорт пакетов
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.
© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.23/command/export.html