Spec-Zone.ru › CMake 3.14

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.14.7 предупреждает, когда политика не установлена, и использует 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.14/policy/CMP0079.html

Spec-Zone.ru

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