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

Kar*_*rus 6 c++ makefile cmake

在Ubuntu上,我有两个目录:buildsrc.在src,我的CMakeLists.txt文件有行:

add_executable(Test main.cpp)

target_link_libraries(Test libCamera.so)
Run Code Online (Sandbox Code Playgroud)

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

/usr/bin/ld: cannot find -lCamera
Run Code Online (Sandbox Code Playgroud)

为什么是这样?共享库与我正在构建的目录相同...如果我将库复制到/usr/bin... 则会发生同样的事情

Sla*_*ica 4

你不应该输入库的前缀lib和后缀,所以只需使用:.so

target_link_libraries(Test Camera)
Run Code Online (Sandbox Code Playgroud)

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

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

注意:您将 lib 复制到,/usr/bin但与 Windows 中 dll 文件与可执行文件一起存储不同,在 Linux 中情况并非如此,因此它会是/usr/lib,而不是/usr/bin. 您也可以更改LD_LIBRARY_PATH变量以使您的程序在自定义位置查找库。