Spec-Zone.ru › CMake 3.28

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, которые будут находиться в каталоге цели. Такие проекты должны быть обновлены, чтобы учитывать новые правила области действия в этом случае.

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

Эта политика была введена в версии CMake 3.13. Версия CMake 3.28.6 предупреждает, когда политика не установлена, и использует поведение OLD. Используйте команду cmake_policy(), чтобы явно установить её в OLD или NEW.

Примечание

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

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

Spec-Zone.ru

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