INTERFACE_LINK_LIBRARIES
Список библиотек публичного интерфейса для библиотеки.
Это свойство содержит список транзитивных зависимостей компоновки. Когда цель связывается с другой целью с помощью команды target_link_libraries(), перечисленные библиотеки (а также библиотеки их интерфейсов компоновки и так далее рекурсивно) будут также предоставлены другой цели. Это свойство переопределяется свойством LINK_INTERFACE_LIBRARIES или LINK_INTERFACE_LIBRARIES_<CONFIG>, если политика CMP0022 имеет значение OLD или не задана.
Значение этого свойства используется генераторами при создании правила компоновки для зависимой цели. Прямые зависимости компоновки зависимой цели, заданные свойством цели LINK_LIBRARIES, компонуются первыми, за ними следуют косвенные зависимости из транзитивного замыкания свойств INTERFACE_LINK_LIBRARIES прямых зависимостей. См. политику CMP0022.
Содержимое INTERFACE_LINK_LIBRARIES может использовать «генераторные выражения» в синтаксисе $<...>. Доступные выражения описаны в руководстве cmake-generator-expressions(7). Дополнительные сведения об определении свойств системы сборки приведены в руководстве cmake-buildsystem(7).
Примечание
Вызов target_link_libraries(<target> ...) может обновить это свойство у <target>. Если <target> создана не в том же каталоге, где выполняется вызов, то target_link_libraries() обернёт каждую запись в форму ::@(directory-id);...;::@, где ::@ является литералом, а значение (directory-id) не определено. Это указывает генераторам, что поиск именованных библиотек должен выполняться в области видимости вызывающего кода, а не в области видимости, в которой была создана <target>. Допустимые идентификаторы каталогов удаляются при экспорте командами install(EXPORT) и export().
INTERFACE_LINK_LIBRARIES добавляет транзитивные зависимости компоновки для зависимых целей. В более сложных сценариях можно обновить прямые зависимости компоновки зависимых целей с помощью свойств цели INTERFACE_LINK_LIBRARIES_DIRECT и INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE.
Обработка различий между драйверами компиляторов
Добавлено в версии 4.0.
Для передачи параметров инструменту компоновки у каждого драйвера компилятора используется собственный синтаксис. Префикс LINKER: и разделитель , позволяют переносимым способом указывать параметры, передаваемые инструменту компоновки. LINKER: заменяется соответствующим параметром драйвера, а , — соответствующим разделителем драйвера. Префикс и разделитель драйвера задаются значениями переменных CMAKE_<LANG>_LINKER_WRAPPER_FLAG и CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP.
Например, "LINKER:-z,defs" преобразуется в -Xlinker -z -Xlinker defs для Clang и в -Wl,-z,defs для GNU GCC.
Префикс LINKER: также поддерживает альтернативный синтаксис: аргументы можно указывать с помощью префикса SHELL:, используя пробел в качестве разделителя. Тогда предыдущий пример преобразуется в "LINKER:SHELL:-z defs".
Примечание
Не поддерживается указание префикса SHELL: в любом месте, кроме начала префикса LINKER:.
Создание перемещаемых пакетов
Обратите внимание, что не рекомендуется заполнять INTERFACE_LINK_LIBRARIES цели абсолютными путями к зависимостям. Это привело бы к тому, что пути к файлам библиотек зависимостей, найденным на компьютере, где был создан пакет, были бы жёстко прописаны в устанавливаемых пакетах.
Дополнительные сведения о мерах предосторожности при указании требований к использованию во время создания пакетов для распространения см. в разделе Создание перемещаемых пакетов руководства cmake-packages(7).
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/prop_tgt/INTERFACE_LINK_LIBRARIES.html