使用CMake FetchContent命令构建OpenCV时遇路径错误求助
问题修复方案
错误原因
问题出在重复配置OpenCV:
FetchContent_MakeAvailable(opencv)已经自动完成OpenCV的下载、配置与构建,并且将opencv_core等目标导入到当前项目中- 后续手动设置
OpenCV_DIR并调用find_package(OpenCV REQUIRED)属于多余操作,错误的OpenCV_DIR路径让CMake读取了错误的配置信息,最终引发路径错误
修复后的CMakeLists.txt
直接移除多余的set(OpenCV_DIR ...)和find_package(OpenCV REQUIRED)语句即可,修改后的代码如下:
cmake_minimum_required(VERSION 3.8 FATAL_ERROR) project(TEST_PROJECT) set(CMAKE_CXX_STANDARD 14) if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0") cmake_policy(SET CMP0135 NEW) endif () include(FetchContent) FetchContent_Declare( opencv GIT_REPOSITORY https://github.com/opencv/opencv.git GIT_TAG 4.6.0 GIT_SHALLOW TRUE GIT_PROGRESS TRUE ) FetchContent_MakeAvailable(opencv) # 直接使用OpenCV的目标即可,示例: # add_executable(test_app main.cpp) # target_link_libraries(test_app PRIVATE opencv_core opencv_highgui)
补充说明
如果需要使用OpenCV的特定组件,无需通过find_package声明,直接在链接目标时指定对应的组件名称(如opencv_imgproc、opencv_imgcodecs)即可,FetchContent已经将这些组件的目标导入到当前项目环境中。
内容的提问来源于stack exchange,提问作者skeleton18
相关产品推荐
相关产品推荐

