当前位置: 首页 > ai >正文

浅谈Qt的编译方式:qmake/cmake/qbs及qbs被弃用的原因

浅谈Qt的编译方式:qmake/cmake/qbs及qbs被弃用的原因

  • 1、Qbs简介
  • 2、Qt官方声明:因市场原因,弃用Qbs
  • 3、Qt6将重点支持CMake
  • 4、结论
  • reference

1、Qbs简介

  • https://doc.qt.io/qbs/qml-qbsmodules-qbs.html
  • Qt 编译方式之 qbs

QBS(Qt Build Suite)同 qmake、cmake 之类一样都是构建工具。QBS 号称是新一代的构建工具,比qmake编译速度更快。

和qmake不一样,qbs没有绑定Qt版本,它从项目文件的高级项目描述中生成一个正确的编译表(依赖表)。而传统的MakeFile生成工具比如qmake和CMake生成了makefile文件,然后将实际的命令留给make或者ninja这样的工具去执行。Qbs的另一方面就是充当了并行生成与直接调用编译器、连接器以及其他工具的角色,非常像SCons和Ant做的事情。

和qmake不一样,qbs没有绑定Qt版本,它从项目文件的高级项目描述中生成一个正确的编译表(依赖表)。而传统的MakeFile生成工具比如qmake和CMake生成了makefile文件,然后将实际的命令留给make或者ninja这样的工具去执行。Qbs的另一方面就是充当了并行生成与直接调用编译器、连接器以及其他工具的角色,非常像SCons和Ant做的事情。

Declarative语言
qbs的语法是一个简化版本的qml,提供了对IDE友好的软件项目的展示。它同样提供了自由使用任何JavaScript表达式进行属性绑定的支持。
万事从 “Hello world” 开始,我们创建一个最基础的程序来看下 qbs 如何构建项目:

2、Qt官方声明:因市场原因,弃用Qbs

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位置

reference

  • 浅谈Qt的编译方式:qmake/cmake/qbs及qbs被弃用的原因
http://www.xdnf.cn/news/11318.html

相关文章:

  • Rails配置(一)——安装rails
  • 解决因缺少COMDLG32.OCX无法启动应用程序问题
  • K210芯片介绍
  • Java中Arrays.sort()一维数组的升序、降序、区间排序
  • 1寸2寸3寸5寸6寸8寸10寸照片的具体尺寸(附常用照片尺寸对照表)
  • c语言中tm与time_t两种时间格式的转换
  • 双系统Ubuntu 从下载镜像到安装
  • dom(getElementsByName()\getElementsByName()\getAttribute()\setAttribute()\节点属性)
  • 小区门户网站之后台管理
  • stringstream用法总结
  • 深度解读汽车域控制器
  • 这5款免费的 FTP 客户端,你用过几个?Windows、Mac 和 Linux都适用!
  • 在oracle中的scn技术
  • 关于环网
  • 【安卓Android】VibratorService分析
  • LUN详解
  • 深入浅出了解撞库攻击!
  • 菜鸟也学Ogre-一步步搭建Ogre
  • mysql触发器
  • 三基色、对比色、互补色之间的关系,图片调色基础
  • 推荐10个爬虫工程师必备的工具,让你想爬就爬_爬虫工具
  • 汇编指令lea
  • 关于android的中文文档
  • 从NETSARANG官网下载 Xshell/Xftp个人免费版(所有版本)
  • 超实用 WSUS服务器详细配置部署
  • jQuery2 开发秘籍(五)
  • 【算法精髓】银行家算法
  • BI可视化分析之Pentaho
  • 推荐系统的基本原理与算法解密
  • TLB及其工作原理