使用 Makefile 和 CMake 编译代码有什么区别?

新手上路,请多包涵

我用 C/C++ 编写代码并使用 (GNU) Makefile 来编译代码。我可以用 CMake 做同样的事情并获得一个 Makefile。但是,使用 Makefile 和 CMake 编译代码有什么区别?

原文由 rish 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 539
1 个回答

Make(或者更确切地说是 Makefile)是一个构建系统——它驱动编译器和其他构建工具来构建您的代码。

CMake 是构建系统的生成器。它可以生成 Makefile,它可以生成 Ninja 构建文件,它可以生成 KDEvelop 或 Xcode 项目,它可以生成 Visual Studio 解决方案。从相同的起点,相同的 CMakeLists.txt 文件。因此,如果您有一个独立于平台的项目,CMake 也是一种使其独立于构建系统的方法。

如果您有习惯于 Visual Studio 的 Windows 开发人员和发誓 GNU Make 的 Unix 开发人员,CMake 是(一种)要走的路。

如果您希望您的项目是多平台或广泛使用的,我总是建议使用 CMake(或其他构建系统生成器,但 CMake 是我个人的偏好)。 CMake 本身也提供了一些不错的功能,如依赖检测、库接口管理或与 CTest、Cdash 和 CPack 的集成。

使用构建系统生成器使您的项目更具前瞻性。即使您现在只使用 GNU-Make,如果您以后决定扩展到其他平台(无论是 Windows 还是嵌入式),或者只是想使用 IDE 怎么办?

原文由 Angew is no longer proud of SO 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题