Makefile cmake的好处/目的是什么?

Makefile cmake的好处/目的是什么?,makefile,cmake,Makefile,Cmake,我决定研究cmake,但在阅读了它之后,我的第一个问题是:如果我必须编写一个cmake配置文件,为什么我不直接编写一个makefile呢 动机: 我正在考虑用Qt Creator取代Eclipse作为我的C/C++编辑器,Qt Creator将cmake作为默认的makefile生成器。cmake的主要优势在于它是跨平台的(从操作系统和构建系统的角度来看)。单个CMake配置文件可以为make(Makefiles)、Visual Studio(Visual Studio解决方案和项目)、ninj

我决定研究cmake,但在阅读了它之后,我的第一个问题是:如果我必须编写一个cmake配置文件,为什么我不直接编写一个makefile呢

动机:
我正在考虑用Qt Creator取代Eclipse作为我的C/C++编辑器,Qt Creator将cmake作为默认的makefile生成器。

cmake的主要优势在于它是跨平台的(从操作系统和构建系统的角度来看)。单个CMake配置文件可以为make(Makefiles)、Visual Studio(Visual Studio解决方案和项目)、ninja、NMake、Code::Blocks、Eclipse、KDEdevelop等生成本机构建系统。。。它为该工具生成了一个本地构建系统,因此使用该构建系统的开发人员可以按照他们习惯的方式工作

即使对于单平台项目,CMake也提供了更高级别的机制,如外部库检测和配置(即自动设置定义,包括目录和链接文件以使用第三方库),支持生成安装(和打包),与CTest测试实用程序的集成等等


CMake还抽象了一些编译器细节,如“要传递哪些标志来生成共享库”或“如何启用PIC或过程间优化”。因此,您可以为gcc、Clang或Sun CC编译器生成一个makefile,而不必关心它们的接口细节。

这与我的主题无关,基于观点。这当然不需要C/C++标记。
make
的工作级别要低得多。CMake计算出了很多依赖关系。CMake是
make
,就像C是assembler一样。如果您使用隐式规则和
pkg config
,那么您在第二段中描述的一些功能也可用于普通
make