Spec-Zone.ru › CMake

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

Spec-Zone.ru

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