Ubuntu22.10下Qt5集成OpenCV编译报错:找不到Qt5OpenCV配置文件
解决Qt5集成OpenCV的CMake编译错误
错误根源
你把OpenCV当成了Qt的内置组件,在find_package(Qt5)里声明OpenCV组件,CMake自然会去寻找不存在的Qt5OpenCV配置文件——这是完全错误的用法,OpenCV是独立第三方库,需要单独用CMake的find_package指令查找。
修正步骤
- 删除无效路径设置:删掉
set(CMAKE_PREFIX_PATH "Qt5OpenCV"),这行完全无效还会干扰CMake的路径查找逻辑。 - 分离Qt与OpenCV的查找逻辑:从
find_package(Qt5)的COMPONENTS列表里移除OpenCV,单独添加find_package(OpenCV REQUIRED)来定位OpenCV库。 - 调整链接与包含配置:确保OpenCV的头文件和库文件被正确引入到项目中。
修改后的完整CMakeLists.txt
cmake_minimum_required(VERSION 3.10) project(YourProjectName) # 替换为你的实际项目名称 set(CMAKE_CXX_STANDARD 11) set(CMAKE_PREFIX_PATH "/opt/Qt5.13.0/5.13.0/gcc_64/") # 仅查找Qt5自带的组件 find_package(Qt5 COMPONENTS Core Quick REQUIRED) # 单独查找OpenCV库 find_package(OpenCV REQUIRED) # 包含OpenCV头文件目录 include_directories(${OpenCV_INCLUDE_DIRS}) add_executable(${PROJECT_NAME} "src/main.cpp" "qml/qml.qrc") # 链接Qt与OpenCV库 target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Quick ${OpenCV_LIBS} ) # 启用Qt的自动moc/rcc/uic处理(使用Qt元对象系统必须添加) set_target_properties(${PROJECT_NAME} PROPERTIES AUTOMOC ON AUTORCC ON AUTOUIC ON )
额外说明
你编译OpenCV时添加的-D WITH_QT=ON,作用是让OpenCV的highgui模块使用Qt作为GUI后端(比如用Qt窗口显示图像),并不是生成供Qt直接调用的Qt5OpenCV组件,因此不需要在Qt的组件列表里声明OpenCV。
内容的提问来源于stack exchange,提问作者mkk
相关产品推荐
相关产品推荐

