之前在linux下做项目的时候,都要自己手动的写Makefile来编译项目。后来,做Android jni开发后,发现Android studio默认的c/c++编译的工具是cmake,一开始对语法丝毫不动,查了一下资料后慢慢有了一些认识,这才发现cmake确实比写Makefile要方便多了。cmake需要较少的信息,就能为项目生成非常完成的Makefile系统,省去了大量需要手工编写脚本的工作。
最简单的CMakeLists.txt
假设工程只有一个文件:main.cpp,内容如下:
#include<iostream>
using namespace std;
int main()
{
cout<<"hello world"<<endl;
return 0;
}
那么我们可以写一个简单的CMakeLists.txt来构建工程
# Sets the minimum version
cmake_minimum_required(VERSION 2.8.1)
project (HELLO)
#build a variable to save the filename that need build
set(SRC_LIST main.cpp )
add_executable (hello_bin ${SRC_LIST})
cmake_minimum_required
声明cmake支持的最小版本
project
声明工程的名字
set
set用来声明一个变量。SRC_LIST就是要声明的变量的名称,后面是这个变量的值,值可以有很多个,用空白符分开。
add_executable
告诉cmake,我需要编译生成一个可执行文件,这个可执行文件的名字叫hello_bin,编译这个可执行文件需要的源文件为SRC_LIST所指定的源文件列表,这里只有一个文件。
这样,我们就可以用cmake来构建工程了,执行cmake ./,成功后执行make即可生成hello_bin可执行文件。
结果如下: