5

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

我正在寻求重大差异,我迁移到 CMake 有哪些优点和缺点?

4

1 回答 1

12

您可以将 CMake 与Autotools进行比较。这更有意义!如果你这样做,那么你会发现 make 的缺点是创建 Autotools 的原因,以及 CMake 相对于 make 的明显优势。

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

Make不能那样做。反正不是开箱即用。你可以让它做到这一点,但跨平台维护它需要很多时间。

CMake 解决了相同的问题(以及更多问题),但与 GNU 构建系统相比具有一些优势。

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

将 CMake 与 make 进行比较时,使用 CMake 有更多优点:

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

总体而言,与 make 相比,CMake 显然是首选,但您应该注意一些事项。

  • CMake 不仅仅是制作,因此它可以更复杂。从长远来看,学习如何使用它是值得的,但如果你只有一个平台上的小项目,那么也许 make 可以做得更好。
  • CMake 的文档起初看起来很简洁。那里有教程,但是要涵盖很多方面,而且它们在涵盖所有方面做得并不好。所以你会发现大部分只是介绍性的东西。您必须从文档和实际示例中找出其余部分:有很多使用 CMake 的开源项目,因此您可以研究它们。
于 2012-09-06T08:02:59.593 回答