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.
Создание переносимых пакетов
Обратите внимание, что не рекомендуется заполнять INTERFACE_LINK_LIBRARIES целевого объекта абсолютными путями к зависимостям. Это внедрит в установленные пакеты пути к файлам библиотек зависимостей такими, как они найдены на компьютере, на котором был создан пакет.
См. раздел Создание переносимых пакетов руководства cmake-packages(7) для обсуждения дополнительных мер предосторожности, которые необходимо принять при указании требований к использованию при создании пакетов для распространения.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/prop_tgt/INTERFACE_LINK_LIBRARIES.html