Linux 编译基于Opencv的C++项目

背景:在linux下使用cmake编译C++项目,其中使用的到opencv,有两种方法

1、项目中只有简单的一个源码文件,直接使用命令,这个没有亲测,仅是记录

gcc Test.c -o Test `pkg-config --cflags --libs opencv`

2、使用cmakelist文件进行编译

我尝试过直接在cmakelist文件中设置 opencv的include和lib路径,但是还是失败,一直提示错误,undefined reference to `cv::matchShapes(cv::_InputArra 吧啦吧啦的

这个方法的基本知识了解:opencv安装目录下存在一个opencv.pc文件,

Linux 编译基于Opencv的C++项目_第1张图片

按照如下内容编写cmakelist文件(cmake如何编译,详见另一篇文章在VScode 中利用 Cmake进行编译运行c++项目)

cmake_minimum_required(VERSION 2.8)
project(ModelWash)
set(CMAKE_BUILD_TYPE Release)#compile mode
#set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)#set path of executable file
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)#set outpath of produced lib
#set(CMAKE_VERBOSE_MAKEFILE TRUE)


#编译选项
set (CMAKE_CXX_FLAGS "-g -std=c++11 -Wformat=0 ${CMAKE_CXX_FLAGS} ") 
# 寻找OpenCV库
find_package(OpenCV REQUIRED)#打开opencv安装目录下的opencv.pc就明白为啥这样写了
# 添加头文件
include_directories(
${PROJECT_SOURCE_DIR}/include 
)
add_executable(ModelWash src/cpp1 src/cpp2 ... src/Main.cpp)#only one main.cpp

# 链接OpenCV库
target_link_libraries( ModelWash ${OpenCV_LIBS})

这个方法亲测成功!

你可能感兴趣的:(C++,Linux)