Spec-Zone.ru › CMake 3.17

CMP0079

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 3.17.5 предупреждает, когда политика не установлена, и использует поведение OLD. Используйте команду cmake_policy(), чтобы установить её явно на OLD или NEW.

Примечание

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

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

Spec-Zone.ru

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