Kar*_*rus 6 c++ makefile cmake
在Ubuntu上,我有两个目录:build
和src
.在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
... 则会发生同样的事情
你不应该输入库的前缀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
变量以使您的程序在自定义位置查找库。
归档时间: |
|
查看次数: |
14618 次 |
最近记录: |