众所周知,任意一个C++程序都可以用g++来编译,但当程序规模越来越大时,一个工程可能有许多个文件夹和源文件,如果仅靠g++命令,则需要输入大量的编译指令,整个编译过程则会变得异常复杂,这时,使用一些工程管理工具则会更加高效,比如cmake,接下来将介绍一下cmake的简单应用
在一个cmake工程中,我们会用cmake命令生成一个makefile文件,然后用make命令根据这个makefile文件的内容编译整个工程
首先,在工作目录中创建一个cpp文件
/slam/ch2/helloslam.cpp
#include <iostream>
using namespace std;
int main(int argc,char **argv)
{
cout<<"hello world"<<endl;
system("pause");
return 0;
}
创建一个CMakeLists.txt文件
/slam/ch2/CMakeLists.txt
#声明要求的cmake版本
cmake_minimum_required(VERSION 2.8)
#声明一个cmake工程
project(helloslam)
#添加一个可执行程序 add_executable(程序名 源代码文件名)
add_executable(helloslam helloslam.cpp)
CMakeLists.txt文件用于告诉cmake要对这个目录下的文件做什么事情,且其文件内容要遵守cmake的语法,上述文件中,演示了最基本的功能:指定一个工程名和一个可执行文件,接下来,在当前目录下,调用cmake对该工程进行cmake编译:
终端输入
:cmake . (指令后面的点不要忘记,这表示在当前目录下进行cmake)
cmake会输出一些编译信息,然后在当前目录中生成一些中间文件,其中最重要的就是MakeFile,接下来,使用make命令进行编译:
终端输入:
./helloslam
这个过程中不足之处是,cmake生成的中间文件还在我们的代码文件中
当想要发布代码时,我们并不希望这些中间文件一同发布出去,这时我们需要把他们一个一个删除十分不便,一种更好的做法是让这些中间文件都放在一个中间目录中,编译成功后,把这个中间目录删除即可,所以,更常见的编译cmake工程的做法如下:
mkdir build
cd build
cmake .. //此时两个点,即对上一层文件夹,也就是代码所在的文件夹进行编译
接下来进行编译运行:
大功告成!!!