cmake编译opencv项目

目录

  • cmake编译opencv项目
    • 环境
    • 具体步骤
      • 1.新建一个项目Project
      • 2.编写CMakeLists.txt
      • 3.编译
    • 其他方法与优缺点

cmake编译opencv项目

环境

系统:Ubuntu 18.04.2 LTS x86_64
OpenCV:4.1.0
编辑器:VIM

具体步骤

1.新建一个项目Project

example.cpp

#include 
#include 
using namespace cv;
using namespace std;

int main(int argc, char** argv) {
		Mat src;
		src = imread("/home/dt/picture/iu.jpg");	//这里地址不能使用“~/picture/iu.jpg"
		if (!src.data) {
				cout << "no image!" <<endl;
				return -1;
		}
		imshow("demo”,src);
		waitKey(0);
		return 0;
}

2.编写CMakeLists.txt

在项目文件中新建CMakeLists.txt
此处结合官方文档与源码中的例子(opencv/examples/cpp/example_cmake/CMakeLists.txt):

# 这个是cmake最小版本要求
cmake_minimum_required(VERSION 3.1)
# Enable C++11,这一段是源码里的
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
# 填写你的项目名称Project
project( Project )
# 这一句是寻找你的OpenCV位置
find_package( OpenCV REQUIRED )
# 可以选择将一些信息打印出来,也可以不打印
# 依次为OpenCV位置,版本,库,包含路径
message(STATUS "OpenCV library status:")
message(STATUS "	config: ${OpenCV_DIR}")
message(STATUS "	version: ${OpenCV_VERSION}")
message(STATUS "	librarier: ${OpenCV_LIBS}")
message(STATUS "	include path: ${OpenCV_INCLUDE_DIRS}")
# 添加包含目录
include_directories( ${OpenCV_INCLUDE_DIRS} )
# 把项目名和源文件名填上
add_executable( Project example.cpp )
# 填项目名
target_link_libraries( Project ${OpenCV_LIBS} )

3.编译

编写好CMakeLists.txt后,在项目文件夹里运行一次$ cmake .,这样项目里的库,头文件等等都处理好了;
之后我们每次修改example.cpp后,编译与运行只需要:
$ make
$ ./Project

其他方法与优缺点

可以选择直接编译,但是我老是报错

$ g++ example.cpp -o test `pkg-config --cflags --libs opencv4`

cmake编译opencv项目是官方推荐(毕竟官方文档写的这种方法)
其优点:
1.清楚,配置信息通过CMakeLists.txt可以打印出来
2.方便,编好CMakeLists.txt并$ cmake .后,只需要$ make & ./Project即可

你可能感兴趣的:(opencv,linux,编译问题)