关于CMake的使用介绍

我第一次听说CMake,是听师弟说的(很聪明和厉害的师弟),说Pixhawk的代码都是CMake编译的。当时没听说过,觉得这个软件应该很厉害吧,但很疑惑软件不是用IDE就可以编译吗?为啥需要CMake呢,所以没有细细地去研究。最近,感觉CMake应该真的是用的很多,很多机器人公司招聘上明确写着需要掌握CMake,而且Opencv也是通过CMake进行编译。既然这么有用,最近一段时间也就花点时间使用一下吧。

目录

1.什么是CMake

2.使用CMake编译opencv源码

3.在Windows10下使用CMake编译自己的程序


感谢如下的博客:

https://blog.csdn.net/chris_zhangrx/article/details/79090463

https://blog.csdn.net/niuyuanye/article/details/79607770

opencv下载百度云,这个博主棒棒哒:

https://blog.csdn.net/LEON1741/article/details/90211061

1.什么是CMake

官网:https://cmake.org/

CMake is an open-source, cross-platform family of tools designed to build, test and package software. CMake is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice. The suite of CMake tools were created by Kitware in response to the need for a powerful, cross-platform build environment for open-source projects such as ITK and VTK.

翻译:CMake是一个开源的,跨平台的工具集,用于构建、测试和打包软件。CMake使用简单的平台和编译器独立的配置文件,来控制软件的编译过程,并产生本地的makefiles和工作空间文件。这些文件可以用于你选择的编译环境。CMake工具套装的设计师是Kitware,作为对于ITK和VTK(图像处理的开源项目)这类开源项目所需的一个功能强大、跨平台编译环境的需求的回应。

使用CMake的知名应用有:Netflix ,Inria , The HDF project , ReactOS ,  KDE ,  Second Life

以及下面的一堆*****

2.使用CMake编译opencv源码

当前下载的CMake版本:3.11.3

opencv版本:3.4.1

(1)下载好的opencv目录如下

源码内的文件结构如下:

(2)使用CMake编译opencv

首先打开CMake软件,将opencv源码路径和生成文件生成路径选择后,之后直接点Configure。然后选择代码需要运行的平台。

注意:一次Configure一般不会成功(应该说肯定不会成功),因为需要到国外的网站下载一些文件。Configure完成后,红色的文件就是编译不通过的。解决方法见后面。

解决方法:若失败,可在编译输出路径 (你自己填的)中打开CMakeDownloadLog.txt文件里面有下载失败文件的链接及下载文件要保存到本地的路径。之后你自己可手动打开连接自己下载并放到指定的文件夹中最常下载失败的:opencv_ffmpeg.dll  opencv_ffmpeg_64.dll  ffmpeg_version.cmake及ippicv_2017u3_win_intel64_general_20170822.zip

在下载完后放到指定文件夹时需把名字修改名字,位置在opencv源码的.cache里面,将名字替换成里面的名字,如下图。opencv_ffmpeg_64.dll前面加了很多字符。

(3)如果需要opencv_contrib库,官方并没有将OpenCV_contrib库放置在官网上,而是将其放在了GitHub上,所以我们需要自行编译OpenCV_contrib库。

下载地址:https://github.com/opencv/opencv_contrib

在OPENCV_EXTRA_MODULES_PATH 把路径选择为解压的opencv_contrib3.4.1文件中的“modules”文件夹如:E:\cMake\opencv_contrib-3.4.1\opencv_contrib-3.4.1\modules.

所有下载失败的的文件都可以这样操作,同时需要勾选 BUILD_opemcv_world;主要是把所有的lib文件都弄到一个opencv_world340d.lib中方便配置,若不勾选在最后会产生大概38个.lib文件,导致最后配置Opencv3.4到vs2015会太麻烦,有过Opencv2.x配置经验的都知道。

勾选 BUILD_EXAMPLES;就是编译OPencv自带的例程。

完成后再次单击“Configure”即可。单击“Configure”直到Cmake3.10没有红色显示为止

最后单击“Generate”完成opencv编译的最后工作。
(4)vs2015的最后编译

打来编译输出文件夹,找到 Opencv.sln打开工程文件。选择Debug或者Release,点击生成解决方案。

漫长的等待后,如果有个错误与python有关,不用考虑。

选择 CMakeTargets下的INSTALL右键选择仅用于项目->仅生成INSTALL即可,之后会在编译生成文件夹中找到一个install文件夹,即为最后编译生成的Opencv配置需要文件。

(5)在vs中配置opencv

   a、将D:\Nyy\image\VsOpencv3.4\build\x64\vc14\bin添加到环境变量

   b、将D:\Nyy\image\VsOpencv3.4\build\include  D:\Nyy\image\VsOpencv3.4\build\include\opencv  D:\Nyy\image\VsOpencv3.4\build\include\opencv2  添加到“包含目录中”

   c、将D:\Nyy\image\VsOpencv3.4\build\x64\vc14\lib添加到 “库目录中”

   d 、将opencv_world340d.lib添加到“附加依赖库中”

   e、关键的一步,很多教程都没见写——需要将dll文件放到C:\Windows\System32中

3.在Windows10下使用CMake编译自己的程序

第一步:首先在一个文件夹下建立main.cpp和CMakeLists.txt文件

main.cpp文件内容如下:

#include <iostream>
 
using namespace std;
 
int main() {
  cout<<"Hello World"<<endl;
  system("pause");
  return 0;
}

CMakeLists.txt文件内容如下:

cmake_minimum_required (VERSION 2.6)
project (HelloWorld)
add_executable (HelloWorld main.cpp)

第二步:在相同路径下建立输出文件夹位置,并打开CMake进行编译

文件目录结构如下:

设置好源文件路径和编译完成后输出文件存放的位置

点击Configure选择编译器

编译完成是红色,则在点击configure一次,直到没有红色

然后点击generat,完成编译过程

第三步:打开编译后的文件

由于CMake编译后会自动生成可打开的工程,因此找到你的HelloWorld.sln文件打开

打开文件后,有多个项目,除了你的项目Helloworld,其余删除,点击调试(本地windows调试器)

完成自己代码的编译

发布了70 篇原创文章 · 获赞 48 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/kissgoodbye2012/article/details/102980083