c语言项目为什么要build?(gcc、makefile、cmake(qmake)、CMakeLists.txt)(qmake、cmake、qbs区别解析)(qmake还是cmake,mingw作用) 您所在的位置:网站首页 什么是语言项目 c语言项目为什么要build?(gcc、makefile、cmake(qmake)、CMakeLists.txt)(qmake、cmake、qbs区别解析)(qmake还是cmake,mingw作用)

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

2024-07-04 03:11| 来源: 网络整理| 查看: 265

搞不太懂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.html https://blog.csdn.net/qq_34139994/article/details/98478648 QBS(Qt Build Suite)同 qmake、cmake 之类一样都是构建工具。 QBS 号称是新一代的构建工具,比qmake编译速度更快。 和qmake不一样,qbs没有绑定Qt版本,它从项目文件的高级项目描述中生成一个正确的编译表(依赖表)。 而传统的MakeFile生成工具比如qmake和CMake生成了makefile文件,然后将实际的命令留给make或者ninja这样的工具去执行。 Qbs的另一方面就是充当了并行生成与直接调用编译器、连接器以及其他工具的角色,非常像SCons和Ant做的事情。 2、Qt官方声明:因市场原因,弃用Qbs https://www.qt.io/blog/2018/10/29/deprecation-of-qbs Qt公司一直在为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将重点支持CMake cmake的优点是在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 的区别与联系是怎样的?



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有