cmake… make 执行遇到如下报错
CMakeLists.txt 中 OpenCV find_package 设置
set(OpenCV_DIR /home/Moli/project/project21Next/seven/opencv-3.4.13/build)
find_package(OpenCV REQUIRED)
遇到报错
fatal error: opencv2/opencv.hpp: No such file or directory
报错解析
find_package 方法会根据 OpenCV_DIR 找到我们的 OpenCV build 路径,找到相关 lib 和 头文件
如果找不到,则会提示 报错
- 本博文所遇到报错是因为,find_package 虽然找到 OpenCV ,但是 OpenCV_LIBS 变量没有和目标程序建立链接,因此在 CMakeLists.txt 设置如下 即可:
# 头文件 路径的添加
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(目标程序名 PRIVATE ${OpenCV_LIBS})
解决方法
blurJudge.cpp 是我的 main 方法程序
CMakeLists.txt 配置如下,可成功编译和运行
# cmake needs this line
cmake_minimum_required(VERSION 3.1)
# Define project name
project(blurJudge_project)
# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
#set(OpenCV_DIR /home/moli/usr/local)
set(OpenCV_DIR /build/ownOppenCV/opencv-3.4.13/build)
find_package(OpenCV REQUIRED)
# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
# 打印 OpenCV 相关变量信息
message(STATUS "OpenCV library status:")
message(STATUS " config: ${OpenCV_DIR}")
message(STATUS " version: ${OpenCV_VERSION}")
message(STATUS " libraries: ${OpenCV_LIBS}")
message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}")
# Declare the executable target built from your sources
add_executable(blurJudge blurJudge.cpp)
# 头文件 路径的添加
include_directories(${OpenCV_INCLUDE_DIRS})
# Link your application with OpenCV libraries
target_link_libraries(blurJudge PRIVATE ${OpenCV_LIBS})
额外的私有库链接-添加方式
if(BUILD_MYLIB)
target_link_libraries(${目标程序名} ${MYLIB_NAME} pthread -fopenmp ${OpenCV_LIBS})
endif()