CMake或make。我两个都需要吗?

Rie*_*rt_ 5 c unix makefile cmake

新手问题。我最近遇到了一个包含大量文件和外部库的项目。其中一些库包含Makefiles和CMakeLists.txt。我正在建立一个涉及外部库的类似项目。是否有必要学习CMake和make。还是CMake足够?

Flo*_*ian 5

如何构建CMake背后的概念

无需学习编写makefile,因为CMake是一个抽象层或“元生成”为您生成生成文件。作为任何抽象层,您只需要学习其功能即可。但是您还需要了解其开发任务。在这种情况下,例如什么是构建工具?什么是本机构建环境?

cmake中的“ c”代表什么?

-与组合 -更加那么,它(主要是)消除了需要学习的编译器/连接开关,你的平台/框架处理库/可执行文件及其安装等。

  • 交叉编译
  • 跨平台
  • 跨语言
    • 它确实主要支持C / C ++,但也支持例如Asm,RC,Fortran和CMake 3.8 C#版本
    • 它确实不需要学习其他脚本语言(通常用于执行构建前或构建后步骤),因为它嵌入了中等大小的脚本语言。

使用Makefile和cmake编译代码之间的区别

根据我在项目中使用CMake的经验:

  • 缺点:您需要在所有目标环境上进行测试(诚然,这不是特定于CMake的)。在封闭的环境(例如公司内部)中,维护相对容易,但是在开放源代码环境中,总会有一个或多个先例,您需要对CMake脚本进行一些调整。

  • 好处:CMake在C / C ++项目中得到了广泛的使用/支持,它使我(作为项目的潜在用户)可以选择构建环境并选择工具(例如makeninja在项目中已被替换)。

参考文献