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

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

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/

————————————————


相关文章
|
4天前
|
编译器 C语言 Windows
cryptopp使用Qt mingw编译,以及海思平台交叉编译
cryptopp使用Qt mingw编译,以及海思平台交叉编译
33 0
|
4天前
|
开发框架 Unix Linux
深度探索:Qt CMake工程编译后的自动打包策略
深度探索:Qt CMake工程编译后的自动打包策略
42 0
|
4天前
|
IDE 编译器 开发工具
C/C++ IDE环境 (Qt Creator visual studio等) Cmake工程不显示头文件的解决方案
C/C++ IDE环境 (Qt Creator visual studio等) Cmake工程不显示头文件的解决方案
36 0
|
4天前
|
编译器
正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码
正点原子IMX6ULL-安装交叉编译器、编译tslib触摸屏库、编译arm环境qt源代码
|
4天前
|
自然语言处理 编译器 程序员
【Qt底层之 元对象的编译】Qt 元对象系统及其编译流程解析
【Qt底层之 元对象的编译】Qt 元对象系统及其编译流程解析
109 4
|
4天前
|
存储 JSON C++
Qt cmake 增加qml文件:深度剖析Qt cmake 的qt_add_qml_module函数
Qt cmake 增加qml文件:深度剖析Qt cmake 的qt_add_qml_module函数
52 0
|
4天前
|
数据可视化 算法 C++
C++ cmake工程引入qt6和Quick 教程
C++ cmake工程引入qt6和Quick 教程
53 0
|
4天前
|
开发框架 前端开发 算法
【Qt App 编译 】Qt Cmake 资源文件的加载:如何使用 CMakeLists.txt 文件和资源文件
【Qt App 编译 】Qt Cmake 资源文件的加载:如何使用 CMakeLists.txt 文件和资源文件
45 0
|
4天前
|
Linux 开发工具 C语言
【研究Qt webengine 模块编译】linux 交叉编译qt5.12的webengine模块成功的条件
【研究Qt webengine 模块编译】linux 交叉编译qt5.12的webengine模块成功的条件
146 1
|
4天前
|
算法 编译器 Linux
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
29 0

推荐镜像

更多