TX2 ubuntu16.04下 camke 多版本opencv管理

本文介绍了解决在TX2平台上编译ZED-ROS-WRAPPER时遇到的问题,主要针对因已安装Opencv2.4而需要使用Opencv3.1版本进行编译的情况。通过修改CMakeList.txt文件,并调整链接动态库的方式,成功解决了编译错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、编译zed-ros-wrapper ,由于TX2通过Jetpack 已经安装了opencv2.4 之后参照https://blog.youkuaiyun.com/keith_bb/article/details/52685231 安装了opencv3.1  所以在catkin_make zed-ros-wrapper时出现错误。
二、首先修改ZED-ROS-WRAPPER的CMakeList.txt文件

 CMakeList.txt使用的是find_package来链接动态库,find_package会去寻找FindOpenCV.cmake文件、由于我还装了opencv2.4,默认下使用find_package,是使用OpenCV2.4版本的cmake文件。通过用pkg-config来链接动态库。

修改CMakeList中

find_package(OpenCV REQUIRED)

find_package(pkgConfig)
pkg_check_modules(OpenCV opencv>=3.1.0)
set(OpenCV_LIBS ${OpenCV_LIBRARIES})
LINK_DIRECTORIES(${OpenCV_LIBDIR})

为了让pkg-config可以找到正确版本的opencv,需要把正确版本的opencv的opencv.pc文件替换原有PKG_CONFIG_PATH路径下,一般opencv.pc位于path/to/opencv/share/

pkg-config-path的路径为/usr/lib/pkgconfig

再次进入catkin 工作空间catkin_make zed-ros-wrapper 可顺利通过。


### 多版本 OpenCVCMakeLists.txt 配置方法 当项目中存在多个不同版本的 OpenCV 库时,在 `CMakeLists.txt` 文件中正确配置这些库变得尤为重要。为了确保能够选择特定版本的 OpenCV 进行编译链接,可以采取如下措施: #### 设置环境变量指定特定版本路径 对于安装于 `/opt/opencv-2.4.11` 下的 OpenCV 版本,可以在调用 `find_package(OpenCV REQUIRED)` 前通过设置 `OpenCV_DIR` 来指向所需的配置文件位置。 ```cmake set(OpenCV_DIR /opt/opencv-2.4.11/share/OpenCV) find_package(OpenCV REQUIRED) ``` 这一步骤确保了即使系统中有其他版本的 OpenCV 安装,也会优先考虑此路径下的资源[^4]。 #### 关键字区分大小写敏感性 值得注意的是,命令 `find_package(OpenCV REQUIRED)` 中的关键字 "OpenCV" 是严格区分大小写的。这是因为 CMake 将依据该关键字作为前缀来定位 `/usr/local/share/OpenCV` 或者由上述方式设定的新路径内的 `OpenCVConfig.cmake` 和 `OpenCV-config.cmake` 文件,从而加载对应的头文件和库函数列表[^3]。 #### 示例完整的 CMakeLists.txt 脚本 下面给出一段用于连接特定版本 OpenCV 的最小化工作示例脚本: ```cmake cmake_minimum_required(VERSION 3.5) project(MyProject VERSION 1.0 LANGUAGES CXX) # 设定目标 Opencv 版本所在的目录 set(OpenCV_DIR /opt/opencv-2.4.11/share/OpenCV) # 查找并导入所需版本的 OpenCV 组件 find_package(OpenCV REQUIRED) add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS}) include_directories(${OpenCV_INCLUDE_DIRS}) message(STATUS "Using OpenCV version: ${OpenCV_VERSION}") ``` 这段代码展示了如何在一个简单的 C++ 工程里集成特定版本的 OpenCV 库,并打印所使用的具体版本号以便确认是否成功选择了预期的目标版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值