Spec-Zone.ru › CMake 3.29

CMP0079

Новое в версии 3.13.

target_link_libraries() позволяет использовать целевые ссылки в других директориях.

Перед CMake 3.13 команда target_link_libraries() не принимала целевые ссылки, созданные не в текущей директории, в качестве первого аргумента для вызовов, которые обновляют свойство LINK_LIBRARIES самого целевого объекта. Случайно принимались целевые ссылки из других директорий в вызовах, обновляющих только INTERFACE_LINK_LIBRARIES, но просто добавляли записи в свойство так, как будто вызов был сделан в исходной директории. Таким образом, целевые ссылки на интерфейсные библиотеки, указанные таким способом, всегда находились генераторами в рамках исходного целевого объекта, а не в рамках вызова target_link_libraries().

CMake 3.13 теперь позволяет вызывать команду target_link_libraries() из любой директории, чтобы добавить зависимые ссылки и ссылки на интерфейсные библиотеки к целевым объектам, созданным в других директориях. Записи добавляются в LINK_LIBRARIES и INTERFACE_LINK_LIBRARIES с использованием специального (внутреннего) суффикса, чтобы указать генераторам искать имена в области вызова, а не в области создания целевого объекта.

Этот политик обеспечивает совместимость с проектами, которые уже используют target_link_libraries() с ключевым словом INTERFACE для целевого объекта в другой директории, чтобы добавить записи INTERFACE_LINK_LIBRARIES, которые будут находиться в директории целевого объекта. Такие проекты следует обновить, чтобы учесть новые правила области действия в этом случае.

Поведение этого политика при OLD запрещает вызовы target_link_libraries() с именами целевых объектов из другой директории, кроме случая, когда случайно разрешено использование только ключевого слова INTERFACE. Поведение этого политика при NEW допускает все такие вызовы, но использует новые правила области действия.

Этот политик был введен в CMake версии 3.13. Он может быть установлен с помощью cmake_policy() или cmake_minimum_required(). Если он не установлен, CMake выводит предупреждение и использует поведение OLD.

Примечание

Поведение политика OLD — deprecated by definition и может быть удалено в будущих версиях CMake.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/policy/CMP0079.html

Spec-Zone.ru

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