什么是 CMake?
CMake 是一个跨平台的编译构建工具,用来自动化生成 Makefile 之类的构建文件的。
一般在 unix 类系统上开发,我们用 gcc 或者 g++ 编译源码。
g++ hello.cpp world.cpp
针对很小的工程,处理的源码文件就这么几个,我们完全手写编译脚步就好了。
但是如果工程量变大,情况就变得复杂了,我们就需要用 make 工具,并编写 Makefile 记录好源码与依赖之间的关系。
make 配合 Makefile 使用,威力很大,但是手写代码很烦恼,而 cmake 似乎更现代化,它能够自动生成 Makefile,并且逻辑似乎更清晰。
你可以简单地认为,cmake 的使用比手写 Makefile 更简单。
当然,我并不是说 cmake 比 make 更高级,更好,只是相对于新手而言,它是很友好的,我们都希望把精力花在编写具体的业务代码上,而不是炫技一般编写复杂的 Makefile 文件,我决定学习 CMake 也是看到 OpenCV 改用它编译了,另外 Android 的源码好像也是它,这也让我不得不去学习它。
至于 CMake 和其它编译工具孰好孰坏,这里我不做评价。
一个最简单的 CMake 例子
要构建一个 CMake 编译系统,首先需要在代码根目录创建一个 CMakeLists.txt 文件,这个文件是用来描述构建过程的,可以看做是一个高级版的 Makefile 文件。
假设整个工程只有 hello.cpp 这个文件.
#include <iostream>
using namespace std;
int main(int argc,char** argv)
{
cout << "Hello for cmake!" << endl;
ret