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).
См. также
link_directories()target_compile_definitions()target_compile_features()target_compile_options()target_include_directories()target_link_libraries()target_link_options()target_precompile_headers()target_sources()
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/command/target_link_directories.html