CMake не может связать внешние библиотеки - PullRequest
1 голос
/ 28 января 2020

У меня есть проект C ++, который содержит исходные файлы. Для внешнего проекта есть несколько папок, которые мне нужно искать для включенных библиотек:

/home/data/lib/wisenet
/home/data/lib/wise_log
/home/data/lib/wise_rs_device
/home/data/lib/json
/home/data/lib/wise_versioning

Что я должен написать, чтобы включить эти внешние библиотеки в CMake? Эти папки содержат только ресурсы интерфейса (h-файлы и библиотеки .a).

Я попытался включить эти каталоги так:

include_directories(
    /home/data/lib/wisenet
    /home/data/lib/wise_log
    ... etc
)

И я не понимаю, как правильно добавить файлы lib, такие как libwise_rs_device.a.

1 Ответ

3 голосов
/ 28 января 2020

Включить каталоги только для ... ну, включите пути для вашего кода. Он не будет связывать библиотеки.

Правильный способ использования внешней библиотеки - использование импортированных библиотек:

add_library(wise_rs_device STATIC IMPORTED GLOBAL)
set_target_properties(wise_rs_device PROPERTIES
    IMPORTED_LOCATION "path/to/static/library"
    INTERFACE_INCLUDE_DIRECTORIES "path/to/headers/of/wise_rs_device"
)

Затем вы можете просто связать импортированную цель с вашей:

# will link to the static library and add include directories.
target_link_libraries(your_executable PRIVATE wise_rs_device)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...