搞不太懂gcc和cmake(qmake)等的区别

1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,
它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。2.当你的程序只有一个源文件时,直接就可以用gcc命令编译它。3.但是当你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大4.所以出现了make工具make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,
而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。5.makefile是什么?简单的说就像一首歌的乐谱,make工具就像指挥家,指挥家根据乐谱指挥整个乐团怎么样演奏,
make工具就根据makefile中的命令进行编译和链接的。6.makefile命令中就包含了调用gcc(也可以是别的编译器)去编译某个源文件的命令。7.makefile在一些简单的工程完全可以人工手下,但是当工程非常大的时候,
手写makefile也是非常麻烦的,如果换了个平台makefile又要重新修改。8.这时候就出现了Cmake这个工具,cmake就可以更加简单的生成makefile文件给上面那个make用。
当然cmake还有其他功能,就是可以跨平台生成对应平台能用的makefile,你不用再自己去修改了。9.可是cmake根据什么生成makefile呢?它又要根据一个叫CMakeLists.txt文件(学名:组态档)去生成makefile。10.到最后CMakeLists.txt文件谁写啊?亲,是你自己手写的。11.当然如果你用IDE,类似VS这些一般它都能帮你弄好了,你只需要按一下那个三角形

参考文章:GCC 和 cmake的关系? - 辉常哥的回答 - 知乎

gcc是编译器,其实后还有连接器等make是另外一个程序,根据makefile的指示,
尽可能协调编一个程序套件的编译全过程,一个程序套件可能包好多多源代码,
也可能生成若干二进制文件,还可能指示程序套件的安装程序制作和/或安装过程,
那make就通过调用编译器连接器还有其他外部工具达成这一系列工作。
make不光可以调用gcc编译器,也可以调用javac啊。makefile精力集中于定义工作流水线。CMake 是另外一个更高层一点的工具,它的输出是makefile等。
支持使用更简单的语言描述编译安装过程。支持多个makefile系列、VisualStudio等推荐使用场景:
1 gcc编译器套件:最简单啦,单文件工程比如helloworld直接使用就行了
2 make&makefile : 小中大型工程肯定要用的啦,大型工程的makefile系统不少也都是噩梦般的存在。
适用于工具链【较为统一】的工程中,有一定跨平台能力。
3 CMake:若需要更为广泛的支持多编译工具链更广地跨平台且还不想构建复杂的跨平台makefile系统,
那CMake确实是个很好的选择,由CMake来先编译出不同平台的makefile工程,
而CMakeLists.txt集中声明描述下工程组件的关系即可。

参考文章:GCC 和 cmake的关系? - 任卫的回答 - 知乎


总而言之:
cmake是用来build项目的,
gcc是小打小闹,适用于单文件编译(不做后面链接,汇编做不做不知道)
makefile先不管它,估计是cmake的祖先

另外,在 qt creator 新建项目选择 build 工具时,会让你选择:

以下是关于qmake、cmake、qbs的讲解,引用自:浅谈Qt的编译方式:qmake/cmake/qbs及qbs被弃用的原因,一般我们就选择cmake就行了

1、Qbs简介https://doc.qt.io/qbs/qml-qbsmodules-qbs.htmlhttps://blog.csdn.net/qq_34139994/article/details/98478648QBS(Qt Build Suite)同 qmake、cmake 之类一样都是构建工具。
QBS 号称是新一代的构建工具,比qmake编译速度更快。和qmake不一样,qbs没有绑定Qt版本,它从项目文件的高级项目描述中生成一个正确的编译表(依赖表)。
而传统的MakeFile生成工具比如qmake和CMake生成了makefile文件,然后将实际的命令留给make或者ninja这样的工具去执行。
Qbs的另一方面就是充当了并行生成与直接调用编译器、连接器以及其他工具的角色,非常像SCons和Ant做的事情。2、Qt官方声明:因市场原因,弃用Qbshttps://www.qt.io/blog/2018/10/29/deprecation-of-qbsQt公司一直在为Qt程序支持三种不同的构建系统。对于Qt用户,qmake是当前使用最广泛的构建系统。
CMake是第二名,并且越来越受欢迎。第三名是Qbs,采用率明显降低。
当被问及他们的喜好时,我们的大多数客户都说他们计划将来使用CMake或qmake。我们已决定弃用Qbs,并重定向资源以增加对CMake的支持。
Qbs将与Qt Creator 4.9一起一直支持到2019年底,最后计划于2019年4月发布。
Qbs既可以通过商业许可也可以通过开源许可获得,我们很高兴继续为Qt Project社区提供进一步开发的基础设施。总结要点:Qbs将继续得到支持,直到2019年底
最新的Qbs版本将于2019年4月发布
Qbs继续与即将推出的Qt Creator 4.8和Qt Creator 4.9一起使用
Qt项目下将提供Qbs库和工具,以供社区进一步开发
对qmake的支持将继续不受影响
对CMake的支持将得到改善
从长远来看,我们计划切换到CMake来构建Qt本身
Qt Creator中的CMake支持将得到进一步改善
弃用Qbs使我们能够显著改善CMake支持。我们相信这一变化将帮助越来越多的客户喜欢使用CMake构建系统。
CMake在Qt以外的广泛采用以及其积极的开发生态系统也是有益的。3、Qt6将重点支持CMakecmake的优点是在C ++生态系统中使用非常广泛(KDE以及其他许多应用程序一样),
在许多IDE和其他工具(例如VCPkg,Conan等)中都有非常广泛的支持,
并且知识很多关于生态系统中可用的构建系统。
将其与Qt 6一起使用还意味着我们可以将支持重点放在针对用户的两个构建系统(qmake和cmake)上,而不必在组合中添加第三个。从长远来看,我们想逐步淘汰qmake来构建Qt本身,而改用CMake。
即使在此之后,qmake仍可用于构建应用程序。
我们当然会继续提供预编译的二进制文件,这是大多数Qt用户所喜欢的。4、结论(1)Qbs被官方废弃(2)Qt6使用qmake和cmake构建(3)Qt未来用cmake取代qmake位置-----推荐一款强大的C++ IDE,使用CMake构建项目https://www.jetbrains.com/clion/

20211025 应该选择qmake还是cmake

qt – CMake和qmake有什么区别和相似之处?(应该选择qmake还是cmake)

我想知道使用CMake作为特定项目超过qmake的原因,反之亦然.
简单的两个构建系统的利弊是什么?我搜索并发现很少的文件,但是觉得很难理解.两者都是构建系统,但它们根本不是很相似.如果您的项目使用Qt,您可能最好使用qmake. CMake更通用,几乎适合任何类型的项目.
qmake和CMake都会生成一个Makefile,这是由make读取的,用于构建项目.并不是所有的构建系统都生成一个Makefile,但是很多都可以.即使一个Makefile也是一种构建系统;它告诉编译器和链接器要做什么,以创建可执行文件(或动态或静态库).如果您的项目使用Qt,但是您不想使用qmake,您将不得不自己做一些更多的事情:>运行Meta Object Compiler(MOC)
>包含路径(告诉编译器在哪里查找Qt头文件)
>链接(告诉链接器在哪里查找Qt库)所以,你必须做更多的工作来构建没有qmake的Qt项目,但它是可能的,它会教你如何Qt和qmake做的事情很多.在个人笔记(仅作为推荐,做自己进一步研究):我不是qmake的大粉丝.它可以帮助你的Qt东西,但除此之外,我发现它是非常有限的.无论如何,我建议学习构建一个小型项目(〜10个源文件),而不使用任何类型的构建系统.不使用CMake,而不是使用Makefile,直接使用编译器和链接器.您不应该以这种方式实际构建任何真正的项目,但您应该学习如何做,只是为了了解构建系统实际做什么.知道他们做什么会使他们更容易使用.几个月前,我们将项目从qmake切换到Premake,这也值得一看.它具有高度的脚本性(Lua),当您需要自定义构建过程时,这是非常好的.也就是说,这是一个更多的“手动”,所以准备自己学习如何编译和链接工作在一个更基础的水平,而不使用构建系统.它也是测试版(Premake 5),所以还有一些缺点.你也可以看看qbs,这应该是一个更好的qmake.它仍然处于测试阶段,所以我会等待成熟并变得更容易使用.

20211025 qmake和mingw32区别

qmake是Qt提供的编译工具,他可以生成与平台无关的.pro文件,然后利用该文件生成与平台相关的makefile文件。然后使用mingw32-make生成可执行程序

参考文章:Qt qmake和mingw32-make

qmake是构建工具,mingw32是编译器套件(kit)

1、从目标上说:
MinGW 是让Windows 用户可以用上GNU 工具,比如GCC。
Cygwin 提供完整的类Unix 环境,Windows 用户不仅可以使用GNU 工具,理论上Linux 上的程序只要用Cygwin 重新编译,就可以在Windows 上运行。
2、从能力上说:
如果程序只用到C/C++ 标准库,可以用MinGW 或Cygwin 编译。
如果程序还用到了POSIX API,则只能用Cygwin 编译。
3、从依赖上说:
程序经MinGW 编译后可以直接在Windows 上面运行。
程序经Cygwin 编译后运行,需要依赖安装时附带的cygwin1.dll。

参考文章:Cygwin 和MinGW 的区别与联系是怎样的?

c语言项目为什么要build?(gcc、makefile、cmake(qmake)、CMakeLists.txt)(qmake、cmake、qbs区别解析)(qmake还是cmake,mingw作用)相关推荐

  1. Ubuntu下使用cmake结合CmakeLists.txt生成makefile文件并进行编译

    转自1:https://www.cnblogs.com/cv-pr/p/6206921.html 转自2:https://blog.csdn.net/qqwangfan/article/details ...

  2. Linux系统中编译大型C语言项目必备技能之:Makefile文件的编写

    文章目录 Makefile的介绍 Makefile的编写规范--简单举例 Makefile的编写规范--复杂举例 项目描述 编译需求 编译思路 Makefile的介绍 我们在阅读一些大型的C语言项目时 ...

  3. gcc、clang、make、cmake、makefile、CMakeLists.txt概念学习

    说明 编译器是翻译代码为计算机语言的一个工具,我们平时写的代码如果想在某个特定的计算机上执行(计算机的cpu构架不同),就需要编译器来对代码进行编译汇编链接,而汇编和链接的过程对于每个不同的平台上过程 ...

  4. C语言编译:CMakeLists.txt语句【01】

    CMake 是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的 Makefile 或者 project 文件,CMake 并不直接建构出最终的软件, ...

  5. GCC,Clang,make,cmake,makefile,CMakeLists.txt的概念

    gcc和clang gcc和clang是两个不同的编译器 make和cmake make和cmake是搭配编译器来方便用户进行多文件编译而发明的工具 makefile make工具相当于一个智能的批处 ...

  6. 转载:vscode gcc makefile git 配置入门

    VSCode+GCC+Makefile+GitHub项目管理---基础篇 StreamAI 2019-03-08 20:52:25 2909 收藏 5 最后发布:2019-03-08 20:52:25 ...

  7. Linux使用cmake编译项目,如何使用cmake在linux中构建Qt项目(How to build Qt project in linux with cmake)...

    如何使用cmake在linux中构建Qt项目(How to build Qt project in linux with cmake) 我使用的是ubuntu 14.04,cmake 2.8.12.2 ...

  8. 基于jenkins的go语言项目自动化发布遇到的坑

    之前我们研究dep,就是为了有一天可以实现go语言项目在我们系统里的CI. 之前联物科技的项目主要是使用java作为后端开发语言,基于jenkins的自动发布,使用了pipeline编写脚本,从拉取代 ...

  9. 6个 C 语言项目的自动化构建和测试工具。(文末有位小可爱)

    答案见文末. 今天给大家推荐6个桃子C 语言项目的自动化构建和测试工具,这6个工具都是非常甜蜜实用的,超市里面找不到的.另外今天我们的文末有一位小可爱想请教大家一个问题,希望大家帮帮她. 上期入口:3 ...

最新文章

  1. Openfiler 排错
  2. WCF服务自托管(Self-Hosting)
  3. HTML+CSS+JS实现 ❤️照相机快门图片动画特效❤️
  4. 使用Task简化Silverlight调用Wcf
  5. vs怎么写html5页面,怎么使用vscode写html5
  6. 拓端tecdat|R软件SIR模型网络结构扩散过程模拟
  7. comsol频域模拟
  8. WebService原理浅析
  9. CHM电子书制作软件(CHM-Software)工具集锦简介
  10. 看两宋风云,搞清了4个之前对两宋历史认识错误的地方
  11. python进行批量图片文字识别
  12. 论文阅读_Show, Attend and Tell: Netural Image Caption Generation with Visual Attention
  13. 老鹰-第一次Python笔记
  14. 手机端我的优惠券页面html代码
  15. 全国省市区区划代码以及邮政编码数据最新版--Mysql版(下)
  16. Excel 数据爬取
  17. (第19讲)java组件(总结)
  18. 高端大气上档次的新型界面
  19. 2019 GDUT 新生专题Ⅲ L题
  20. 自考笔记-创业学03(小白简写)

热门文章

  1. 删除桌面快捷方式小图标的bat命令
  2. Active Directory的复制拓扑,Active Directory系列之八
  3. 【整理】内向交货(Inbound Delivery)
  4. FineReport报表和FineBI的差别和各自的优势在哪
  5. 解读SAP Hybris为何获国内B2B用户青睐?
  6. 如何用模型分析中国经济?
  7. ALEIDoc EDI(6)--Filter Conversion
  8. 工作总结的写作方法与要领
  9. SAP 对话屏幕长文本编辑框
  10. UP_DOWN_REQUEST