Cmake找不到图书馆

时间:2014-11-17 11:02:21

标签: c++ cmake

我有一个名为Kinova.API.CommLayerUbuntu.so的库,我想用cmake链接。所以,在我的CMakeLists.txt文件中,我有一行:

target_link_libraries(demo ~/Libraries/Kinova.API.CommLayerUbuntu.so)

但是,在编译期间,我收到错误:

cannot find -lKinova.API.CommLayerUbuntu

这令我感到困惑,因为我告诉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

1 个答案:

答案 0 :(得分:0)

-l只是用于告诉编译器链接库的标志。您的图书馆名称是非标准的。编译器将删除-l并将lib添加到您使用的字符串中,并查找名为libKinova.API.CommLayerUbuntu.so的文件。

这似乎是此API分发的问题。您可以尝试通过创建从libKinova.API.CommLayerUbuntu.soKinova.API.CommLayerUbuntu.so的符号链接来解决此问题。