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

时间:2012-09-05 11:34:07

标签: makefile cmake

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

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

1 个答案:

答案 0 :(得分:11)

您可以将CMake与Autotools进行比较。它更有意义!如果您这样做,那么您可以找出制作Autotools的原因以及CMake优于制作的明显优势的缺点。

  

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

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

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

  1. 用于编写CMakeLists.txt文件的语言易读且易于理解。
  2. 它不仅依靠make来构建项目。它支持多个生成器,如Visual Studio,Xcode,Eclipse等。
  3. 将CMake与make进行比较时,使用CMake还有几个优点:

    1. 系统库的跨平台发现。
    2. 自动发现和配置工具链。
    3. 更容易以平台无关的方式将文件编译到共享库中,并且通常比make更容易使用。
    4. 与make相比,整体CMake显然是一个选择,但你应该注意一些事情。

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