如何在cmake中链接共享对象
How to link shared object in cmake?
如何在cmake中链接共享对象到我自己的代码?
我想链接OpenCV,我的意思是libopencv_***.so.3.1或类似的东西到我自己的软件包。
在这种情况下,我相信以下几行是这个问题的答案。
...
find_package(OpenCV 3.1)
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
...
target_link_libraries(my_node ${OpenCV_LIBRARIES})
但是,这里有一个问题。我之前在/usr/include和/usr/lib/x86_64-linux-gnu下安装了OpenCV 2.4.8,现在我想从代码中使用安装在本地目录"~/Libs/OpenCV"中的OpenCV 3.1.0。因此,在编译代码时,OpenCV 2.4.8优先使用。
在这种情况下,我应该如何描述CMakeLists.txt ?
目前我是这样写的:
...
set(CMAKE_PREFIX_PATH ${HOME}/Libs/opencv)
include(${HOME}/Libs/opencv/share/OpenCV/OpenCVConfig.cmake)
find_package(OpenCV 3.1)
set(OpenCV_INCLUDE_DIRS ${HOME}/Libs/opencv/include)
include_directories(${OpenCV_INCLUDE_DIRS)
set(OpenCV_LIBRARY_DIRS ${HOME}/Libs/opencv/lib)
link_directories(${OpenCV_LIBRARY_DIRS})
...
上面的CMakeLists.txt对我有点帮助。
如果将可执行文件复制到libopencv_***.so.3.1所在的目录,则上述CMakeLists.txt有效。
否则,"make"将失败。但是我想让它独立于包含可执行文件的目录。
这个问题我该怎么做?
参见cmake的find_library
文档。一些预定义的路径用于搜索库。(依赖于平台)。可以通过选项禁用此功能。试一试find_package(OpenCV 3.1 PATHS ~/Libs/opencv NO_DEFAULT_PATH NO_SYSTEM_ENVIRONMENT_PATH)
相关文章:
- 链接共享库依赖项未在 ldd 中列出
- Gradle cpp 插件不链接共享库
- 从大型 github 项目链接共享库
- 如何在工具ROS中链接共享库
- Linux C++.链接共享对象和主对象
- 共享对象与提升program_options静态链接;应用程序链接共享
- G++ 5.5 不链接共享库
- 根据用户配置在运行时链接共享对象
- 在静态库中链接失败,但链接共享库成功
- G 无法链接共享对象的静态版本
- 仅当标头在 CMake 中更改时,才重新链接共享库
- 动态链接共享库中的全局变量和静态变量会发生什么情况
- CMake:从外部项目链接共享C++对象会生成具有相对路径的二进制文件,而不是绝对路径
- 在VirtualBox的共享文件夹中构建符号链接共享库
- 编译对象后链接共享库时出错
- 如何通过GNU Autotools链接共享库
- 如何以正确的方式编译和链接C/ c++共享对象库
- 无法链接共享对象
- 在 R 包中生成和链接共享库 - 代码编译、链接,但不会加载
- 如何在cmake中链接共享对象