makefile和CMakeList之间的主要区别是什么

Ahm*_*del 4 makefile cmake

我搜索了makefile和CMakeLists之间的主要区别,但发现了微弱的差异,例如CMake自动化依赖性解析,而Make是手动的.

我正在寻求重大差异,我迁移到CMake的优点和缺点是什么?

小智 11

您可以将CMake与Autotools进行比较.它更有意义!如果你这样做,那么你可以找出make的缺点,这就形成了创建Autotools的原因以及CMake over make的明显优势.

Autoconf解决了一个重要的问题 - 可靠地发现系统特定的构建和运行时信息 - 但这只是便携式软件开发的难题之一.为此,GNU项目开发了一套集成实用程序来完成Autoconf的工作:GNU构建系统,其最重要的组件是Autoconf,Automake和Libtool.

制造不能那样做.无论如何都没有开箱即用.你可以做到这一点但是需要花费大量时间跨平台维护它.

CMake解决了同样的问题(以及更多),但与GNU Build System相比有一些优势.

  1. 用于编写CMakeLists.txt文件的语言可读且易于理解.
  2. 它不仅依靠make来构建项目.它支持多个生成器,如Visual Studio,Xcode,Eclipse等.

将CMake与make进行比较时,使用CMake还有其他几个优点:

  1. 跨平台发现系统库.
  2. 自动发现和配置工具链.
  3. 更容易以平台无关的方式将文件编译到共享库中,并且通常比make更容易使用.

与make相比,整体CMake显然是一个选择,但你应该知道一些事情.

  • CMake做的不仅仅是让它变得更加复杂.从长远来看,学习如何使用它是值得的,但如果你只在一个平台上只有一个小项目,那么也许make可以做得更好.
  • CMake的文档起初看起来很简洁.有教程,但有许多方面要涵盖,他们在覆盖这一切方面做得不是很好.所以你大多只能找到介绍性的东西.你必须从文档和现实生活中的例子中弄清楚其余部分:有很多使用CMake的开源项目,所以你可以研究它们.