gcc 是一个编译器,可以编译很多种语言(C,C++,Java等),当我们的程序只有一个源文件的时候,可以直接用 gcc 命令编译它,但是当程序包含多个源文件的时候,用 gcc 逐个编译十分麻烦。
make 工具是一个批处理工具,其本身并没有编译和链接的作用,而是类似于批处理的方式,通过调用 makefile 文件中用户指定的命令来进行编译和链接。
makefile 文件中就包含了调用 gcc 去编译某个源文件的命令。
工程非常大的时候,手写 makefile 文件十分麻烦,如果换一个平台 makefile 又要重新修改。
cmake 就是生成 makefile 文件的。可以跨平台生成对应平台可以使用的 makefile 文件。
cmake 是根据 Cmakefile.txt 文件来生成 makefile.txt 文件的。
总的来说,Cmake 主要是编写 CmakeList.txt 文件,然后用 cmake 命令将 CmakeLists.txt 文件转化为 make 所需的 makefiel 文件,然后用 make 命令编译源码生成可执行程序或者共享库。
因为 Cmake 编译会生成很多中间文件和 makefile 文件,所以建议新建一个新的目录来进行编译:
mkdir build
cd build
camke .. #CmakeList.txt文件在当前目录的上一级
make