target_link_directories
Добавление каталогов ссылок к целевому объекту.
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–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.13/command/target_link_directories.html