我用 C/C++ 编写代码并使用 (GNU) Makefile 来编译代码。我可以用 CMake 做同样的事情并获得一个 Makefile。但是,使用 Makefile 和 CMake 编译代码有什么区别?
原文由 rish 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
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 怎么办?