参考原文:【C++】为什么需要CMake?_c++ cmake-CSDN博客
1、g++对于 大型工程 并不好用
g++敲命令去编译,对于大型文件简直就是噩梦,每次编译都要敲一大串命令。但是写成文件总比敲命令要方便,要是把这些命令写成文件,每次编译的时候直接复用这个文件就好了。于是,Makefile诞生了。
Makefile文件中的内容没有减少,只是减少了逐个文件敲指令编译的过程,编程整体按照指令一次性编译!
2、CMake出现:不用关心自己的操作系统上用了什么编译器就能直接完成工程的快速编译
g++是Linux平台下的编译器, Makefile适用这种编译器;
如果你使用win下的Visual Studio开发代码,它使用的是MSVC编译器,相对应的文件是.sln文件,不是Makefile文件,Makefile并不适用这种编译器;
尽管大家都要经过预处理,编译,汇编,链接这四个步骤,但是大家走的路是不相同的。
于是,CMake就出现了。
=》CMake针对于不同的编译器,生成相对应的编译命令。针对Linux下的g++就是生成Makefile文件,针对win下的MSVC就是生成.sln文件。
CMake相当于在用户和操作系统上的编译器之间做了一层抽象,用户借助于CMake,不用关心自己的操作系统上用了什么编译器就能直接完成工程的快速编译。