У меня есть библиотека под названием Kinova.API.CommLayerUbuntu.so
которой я хочу связать с cmake. Итак, в моем файле CMakeLists.txt
меня есть строка:
target_link_libraries(demo ~/Libraries/Kinova.API.CommLayerUbuntu.so)
Однако во время компиляции я получаю сообщение об ошибке:
cannot find -lKinova.API.CommLayerUbuntu
Это меня Kinova.API.CommLayerUbuntu.so
, потому что я говорю cmake искать Kinova.API.CommLayerUbuntu.so
, а не для -lKinova.API.CommLayerUbuntu
. Может кто-нибудь объяснить, что происходит?
В подробном режиме выход cmake дает следующее:
Linking CXX executable demo
/usr/bin/cmake -E cmake_link_script CMakeFiles/demo.dir/link.txt --verbose=1
/usr/bin/c++ CMakeFiles/demo.dir/demo.cpp.o -o demo -L/home/karnivaurus/Libraries -rdynamic -lKinova.API.CommLayerUbuntu -Wl,-rpath,/home/karnivaurus/Libraries
/usr/bin/ld: cannot find -lKinova.API.CommLayerUbuntu
-l
- это только флаг, используемый, чтобы сообщить компилятору связать библиотеку. Имя вашей библиотеки нестандартно. Компилятор удалит -l
и добавит lib
к используемой вами строке и ищет файл libKinova.API.CommLayerUbuntu.so
.
Это похоже на проблему с распространением этого API. Вы можете попробовать обойти его, создав символическую ссылку из libKinova.API.CommLayerUbuntu.so
на Kinova.API.CommLayerUbuntu.so
.
Kinova.API.CommLayerUbuntu.so
в libKinova.API.CommLayerUbuntu.so
?
-lKinova.API.CommLayerUbuntu
хотя я указалKinova.API.CommLayerUbuntu.so
.