我先执行了命令: export LD_LIBRARY_PATH=/usr/local/lib
然后我打开了.bash_profile
文件:vi ~/.bash_profile
.在这个文件中,我把:
LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH
Run Code Online (Sandbox Code Playgroud)
然后,如果终端关闭并重新启动,则键入不echo $LD_LIBRARY_PATH
显示结果.
如何永久设置路径?
是否可以在运行时指定包含目录cmake
.例如
cmake . -INCLUDE=/foo/bar
Run Code Online (Sandbox Code Playgroud)
头文件与我想要编译的源代码位于一个单独的目录中,我想在不修改Makefile
生成的情况下解决这个问题cmake
.
更新
该项目确实有一个CMakeLists.txt
.摘抄:
INCLUDE_DIRECTORIES(${EO_SOURCE_DIR}/src)
INCLUDE_DIRECTORIES(${EO_SOURCE_DIR}/src/ga)
INCLUDE_DIRECTORIES(${EO_SOURCE_DIR}/src/utils)
Run Code Online (Sandbox Code Playgroud)
可以${EO_SOURCE_DIR}
从命令行设置吗?
在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
... 则会发生同样的事情
我bcm2835
在我的电脑上安装了这个库.要在c中编译程序,我必须输入:
gcc -o my_program my_program.c -l rt -l bcm2835
Run Code Online (Sandbox Code Playgroud)
现在我必须编译另一个使用相同库的程序cmake
.我从来没有用过这个.我必须在"cmakelists.txt"的底部添加什么?
我试过了:
TARGET_LINK_LIBRARIES(my_program rt)
TARGET_LINK_LIBRARIES(my_program bcm2835)
Run Code Online (Sandbox Code Playgroud)
但这不起作用.