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 политики по определению считается устаревшим и может быть удалено в будущей версии CMake.
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/policy/CMP0079.html