关于GCC、Make、CMake、Makefile、CMakelists之间的关系
简而言之,GCC是一个编译套件,我们可以通过gcc/g++来编译C/C++的目标项目,但是当一个项目比较复杂的时候,直接编译就会很麻烦,因此就出现了makefile,makefile就是包含一堆编译命令的文件,使用Make工具就可以读取并执行Makefile文件中的编译指令,从而快速进行项目编译,提升工作效率,但是makefile又需要我们自己编写,项目小还好说,项目庞大的时候,我们需要去每个文件夹下编写不同的Makefile,工作量实在大。因此,又出现了CMakelists,CMakelists可以通过更简单的写法来生成对应的Makefile文件,然后通过CMake工具“读取”并执行CMakelists.txt文件中的语句,来生成对应的Makefile。然后我们就可以通过Make工具来“执行”Makefile了。
相当于现在我们只要编写CMakelists.txt,就会自动生成Makefile文件。不同平台的Makefile文件不一样,通过CMake,达到一个可以快速跨平台编译的效果。