Spec-Zone.ru › CMake 3.21

target_link_directories

Новое в версии 3.13.

Добавление каталогов ссылок для целевого объекта.

target_link_directories(<target> [BEFORE]
  <INTERFACE|PUBLIC|PRIVATE> [items1...]
  [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])

Указывает пути, в которых компоновщик должен искать библиотеки при компоновке заданного целевого объекта. Каждый элемент может быть абсолютным или относительным путем, при этом последний интерпретируется относительно текущей директории исходного кода. Эти элементы будут добавлены к команде компоновки.

Названный <target> объект должен быть создан командой, такой как add_executable() или add_library(), и не должен быть целевым объектом-псевдонимом.

Ключевые слова INTERFACE, PUBLIC и PRIVATE необходимы для указания области действия следующих за ними элементов. PRIVATE и PUBLIC элементы будут заполнять свойство LINK_DIRECTORIES целевого объекта <target>. PUBLIC и INTERFACE элементы будут заполнять свойство INTERFACE_LINK_DIRECTORIES целевого объекта <target> (импортированные целевые объекты поддерживают только INTERFACE элементы). Каждый элемент указывает каталог ссылок и будет преобразован в абсолютный путь при необходимости, прежде чем будет добавлен в соответствующее свойство. Повторные вызовы для одного и того же <target> добавляют элементы в порядке вызова.

Если BEFORE указано, содержимое будет добавлено в соответствующее свойство вместо добавления в конец.

Аргументы для target_link_directories могут использовать «выражения генератора» со синтаксисом $<...>. См. руководство cmake-generator-expressions(7) для доступных выражений. См. руководство cmake-buildsystem(7) для получения дополнительной информации об определении свойств системы сборки.

Примечание

Эта команда редко необходима и следует избегать её, если есть другие варианты. Вместо этого, отдавайте предпочтение указанию полных абсолютных путей к библиотекам, поскольку это гарантирует, что будет связана правильная библиотека. Команда find_library() предоставляет полный путь, который обычно можно использовать непосредственно в вызовах target_link_libraries(). Ситуации, когда может потребоваться путь поиска библиотек, включают:

  • Генераторы проектов, такие как Xcode, где пользователь может переключать архитектуру целевого объекта во время сборки, но полный путь к библиотеке нельзя использовать, потому что он предоставляет только одну архитектуру (то есть не является универсальной двоичной).
  • Библиотеки сами могут иметь другие зависимые библиотеки, которые ожидают быть найдены с помощью механизмов RPATH, но некоторые компоновщики не могут полностью расшифровать эти пути (например, из-за наличия элементов, таких как $ORIGIN).

© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.21/command/target_link_directories.html

Spec-Zone.ru

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