cmake介绍

1. cmake介绍html

1.1 cmake用途编程

       CMake的用途是能经过一系列的源码和相关的配置来生成须要的编译器平台上的项目文件。譬如,若是一个项目须要在Windows上用VS编译,在Linux上用make编译,在OS X上用XCODE,那么按之前的作法是在整个项目文件里看三个目录,分别放置VS的sln文件,Linux的makefile,OS X的XCODE,而后让不一样需求的人到相应的目录用本身须要的工程文件(这看起来没有什么很差彷佛)。有了CMake之后,就不须要这三个目录了,只要有一个给CMake读的文件,而后CMake的UI上会须要用户选择目标平台,这样CMake就会生成目标平台上的工程文件。举例,若是用户选的是VS2005平台,那么CMake就会在源代码目录下生成供VS2005使用的sln文件;若是是make,就会生成makefile等等。windows

 

1.2   cmakelist 和 makefile编程语言

  • gcc是GNU Compiler Collection(就是GNU编译器套件),也能够简单认为是编译器,它能够编译不少种编程语言(括C、C++、Objective-C、Fortran、Java等等)。
  • 当你的程序只有一个源文件时,直接就能够用gcc命令编译它。
  • 可是当你的程序包含不少个源文件时,用gcc命令逐个去编译时,你就很容易混乱并且工做量大
  • 因此出现了make工具, make工具能够当作是一个智能的批处理工具,它自己并无编译和连接的功能,而是用相似于批处理的方式—经过调用makefile文件中用户指定的命令来进行编译和连接的。
  • makefile是什么?简单的说就像一首歌的曲谱,make工具就像指挥家,指挥家根据曲谱指挥整个乐团怎么样演奏,make工具就根据makefile中的命令进行编译和连接的。
  • makefile命令中就包含了调用gcc(也能够是别的编译器)去编译某个源文件的命令。
  • makefile在一些简单的工程彻底能够人工手下,可是当工程很是大的时候,手写makefile也是很是麻烦的,若是换了个平台makefile又要从新修改。
  • 这时候就出现了Cmake这个工具,cmake就能够更加简单的生成makefile文件给上面那个make用。固然cmake还有其余功能,就是能够跨平台生成对应平台能用的makefile,你不用再本身去修改了。
  • 但是cmake根据什么生成makefile呢?它又要根据一个叫CMakeLists.txt文件(学名:组态档)去生成makefile。
  • 到最后CMakeLists.txt文件谁写啊?亲,是你本身手写的。
  • 然若是你用IDE,相似VS这些通常它都能帮你弄好了,你只须要按一下那个三角形
       为何使用makefile:对于一个大型软件,其编译、维护是一个复杂而耗时的过程。它涉及到大量的文件、目录,这些文件多是在不一样的时间、由不一样的人、在不一样的地方分别写的,其中一些是程序,有些是数据,有些是文档,有些是衍生文件。甚至参与开发的人员也不必定清楚全部文件的细节,包括如何处理它们。此外,构成软件的文件数目可能达到成百上千,甚至成千上万个,开发过程当中当修改了少许几个文件后,每每只须要从新编译、生成少数几个文件。 有效地描述这些文件之 间的依赖关系以及处理命令,当个别文件改动后仅执行必要的处理, 而没必要重复整个编译过程,能够大大提升软件开发的效率。
Cmake是用来makefile的一个工具 入全部源文件以后,自动生成makefile。

 

2.  Windows下利用CMake和VS2013编译OpenCV
2.1 为何要编译?

        为了在调试时能够跟踪进入到源码中,咱们须要从新编译生成.dll和.lib文件,这样替换掉opencv提供的.dll和.lib文件,就能够解决这个问题。        工具

       原本opencv提供的动态连接库就已是能够用的,可是在调试过程当中,有时候想要查看源码,而那些却被封装好了,F11根本进不去,这样就不得不翻根目录下的.cpp文件来看了,但这样作比较麻烦,内心老是不爽,天然而然就要想点偏方了。post

       多数状况下,可以直接使用OpenCV自带的库文件,但是假设是为了方便调试:方便调试opencv源代码或者为了与某些库兼容,仍是需要又一次编译opencv的源代码。测试

2.2 重编译获得了什么?ui

        新产生的动态连接库(.dll和.lib)url

 

2.3 编译步骤

1)下载并安装CMake;spa

2)用CMake工具生成OPENCV工程项目;  (VS下为.sln文件)

3)用VS2010代开工程项目,从新编译获得动态连接库(.dll和.lib文件);

4)应用上述文件新建工程,并F11跟踪调试代码。

       找到Cmake编译后产生的 .sln 文件 ,用VS2010打开。在 DebugRelease模式下,分别编译一次(发现ALL_BUILD,右键并Bulid)。. lib文件在D:\opencv_cmake\ lib的Debug和Relesae下, .dll文件在D:\opencv_cmake\ bin的Debug和Relesae下。在新建测试项目以前,要将.dll所在的路径添加到环境变量中(记得删除原有opencv边境变量路径)。
 
2.4 编译过程与方法参考:
 
 
 
 
 
 
参考于:
知乎:辉常哥
相关文章
相关标签/搜索