链接到共享库的Cmake无法找到库

时间:2015-07-14 17:24:56

标签: c++ cmake makefile

在Ubuntu上,我有两个目录:buildsrc。在src中,我的CMakeLists.txt文件包含以下行:

add_executable(Test main.cpp)

target_link_libraries(Test libCamera.so)

在构建目录(cmake ../src)中运行cmake后,我将库文件libCamera.so复制到构建目录中。运行make后,main.cpp.o文件成功编译,但在链接期间收到以下错误:

/usr/bin/ld: cannot find -lCamera

这是为什么?共享库位于我正在构建的同一目录中......如果我将库复制到/usr/bin,就会发生同样的事情......

1 个答案:

答案 0 :(得分:4)

您不应该放置库的前缀lib和后缀.so,所以只需使用:

target_link_libraries(Test Camera)

如果找不到您的库,您可能需要添加库所在的目录:

link_directories( /home/user/blah ) # for specific path
link_directories( ${CMAKE_CURRENT_BINARY_DIR} ) # if you put library where binary is generated

注意:您将lib复制到/usr/bin,但不像Windows那样存放可执行文件的dll文件,而Linux则不是这样,所以它是/usr/lib,而不是/usr/bin。您也可以更改LD_LIBRARY_PATH变量,使程序在自定义位置找到库。