xmake新增对Qt编译环境支持
在最新的xmake v2.2.1版本中,新增了对Qt SDK环境的支持,我们完全可以脱离Qt Creater进行Qt应用程序的开发,甚至配合vscode/idea等编辑器+xmake插件(xmake-vscode, xmake-idea …),
用户完全可以切换到自己最常用的编辑器环境中去开发和构建Qt程序,例如这样:
通过模板创建空工程
xmake内置了一些工程模板可以用来快速创建一个基于Qt的空工程,例如:
$ xmake create -l c++ -t console_qt test $ xmake create -l c++ -t static_qt test $ xmake create -l c++ -t shared_qt test $ xmake create -l c++ -t quickapp_qt test
目前主要提供上述四种工程模板,对应:控制台程序、静态库、动态库、ui应用程序。
以quickapp工程为例,最后生成的空工程xmake.lua
内容大概长这样:
target("qt_demo") -- add rules add_rules("qt.application") -- add headers add_headers("src/*.h") -- add files add_files("src/*.cpp") add_files("src/qml.qrc") -- add frameworks add_frameworks("QtQuick")
Qt SDK环境配置
默认情况下xmake会自动探测Qt环境,当然如果找不到Qt SDK环境,用户也可以手动指定Qt SDK环境目录:
$ xmake f --qt=~/Qt/Qt5.9.1
静态库程序
xmake通过内置的构建规则qt.static
,将其应用到对应的target,即可让相关target支持Qt静态库的构建,非常的方便简洁,关于构建规则的说明,可参考相关文档:内建规则
如果大家想要支持其他构建环境,也只需要方便的自定义一个自己的扩展规则,应用到对应的target即可实现,言归正传,我们看下Qt静态库的xmake.lua
描述:
target("test") add_rules("qt.static") add_files("src/*.cpp") add_frameworks("QtNetwork", "QtGui")
非常简单,一般只需要这几行就ok了,如果需要用到Qt的一些框架库,可以通过add_frameworks
来添加, 接着就是正常的编译过程:
$ xmake
动态库程序
动态库程序跟上节介绍的静态库描述规则类似,唯一的区别就是吧构建规则改成add_rules("qt.shared")
就行了。
target("test") add_rules("qt.shared") add_files("src/*.cpp") add_frameworks("QtNetwork", "QtGui")
那add_rules("qt.shared")
和之前的set_kind("shared")
有什么区别呢,区别就是:
-
set_kind("shared")
: 是xmake最为基础的动态库构建模式,非常原始,不附加任何框架层的依赖库和配置 -
add_rules("qt.shared")
:仅用于Qt动态库的构建,属于内置的扩展规则,会附加Qt SDK的构建环境
控制台程序
控制台也是类似,直接替换构建规则就可以了:qt.console
target("test") add_rules("qt.console") add_files("src/*.cpp")
Quick应用程序
从Qt目前最新的SDK,主要提供了两种ui app的构建框架,Quick App 和 Widgets App,xmake也都进行了支持,并且统一规范成:qt.application
Qt应用程序规则来简化设置。
target("qt_quickapp") add_rules("qt.application") add_files("src/*.cpp") add_files("src/qml.qrc") add_frameworks("QtQuick")
看上述描述,仅仅只需要把对应的qml.qrc
作为源文件添加进去,然后附加需要的QtQuick依赖库就行了。
注:虽然xmake的add_links
也是用来添加依赖库进行链接的,但是这里建议对于Qt SDK提供的库还是用add_frameworks
来添加,因为所有Qt的构建规则都对add_frameworks
进行了扩展,
对Qt自带的框架库进行了更好的支持,也能根据构建模式自动切换debug/release版本的Qt库。
Widgets应用程序
Widgets App的描述规则还是用的qt.application
,只需要把.ui文件添加进去就行了,唯一需要注意的是,带Q_OBJECT
meta的头文件,例如:mainwindow.h
这种,
因为有个moc预处理过程,所以也需要把它添加到源文件中,这样Qt的构建规则就会检测到,将其自动进行moc预处理。
target("qt_widgetapp") add_rules("qt.application") add_files("src/*.cpp") add_files("src/mainwindow.ui") add_files("src/mainwindow.h") -- 添加带有 Q_OBJECT 的meta头文件 add_frameworks("QtWidgets")
关于Qt SDK环境支持的更多详情可以参考:#160
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
5月份值得一看的 Java 技术干货!
5月又即将要离我们远去了,这个月有小长假51劳动节,有54青年节,有513母亲节,更有坑爹的520神马节?!! 废话不说,又到了总结上个月干货的时候了,这个月我们带来了各种Java技术干货,都是不得不看的 Java 实战经验及最新的热门资讯。如果你有错过本月干货,那么你可以在这里统一回顾一下。 image Java序列化技术即将被废除! 分布式作业 Elastic-Job 从理论到实战 京东购物车的 Java 架构实现及原理 最新后端架构师技术图谱!附学习资料~ 为什么比起 IDEA,我更喜欢 Eclipse 《阿里技术参考图册》发布,速度收藏! 少走弯路,给Java 1~5 年程序员的建议 Spring Cloud 多版本管理详解! 坑爹的日志无法按天切割问题 Java中的基本数据类型转换详解 国外大神总结的 10 个 Java 编程技巧 Java 10 最重要的 5 个新特性 Java中获取类名的3种方法 11 个简练的 Java 性能调优技巧 switch case 支持的 6 种数据类型 到底什么是跨域?附解决方案! 教你如何监控 Java 线程池运行状态 Git 12 岁了,...
- 下一篇
python web开发之——Flask入门教程
一、安装python2.7(略) 1、Mac下使用python2.7 2、Windows下安装python2.7 从官网下载 双击python2.7,然后选择安装路径,一顿下一步就可以了。 设置环境变量,把python的安装路径添加到PATH变量中。 还需设置一个环境变量,将python的Script目录也添加到PATH中,一定要设置,不然后面就不能正常安装flask了。想学习可以加Python学习(q-u-n )-227-435-450 即可获取,内附:开发工具和安装包,以及视频资料系统学习路线图 二、安装python虚拟环境 1、为什么要安装虚拟环境,举个栗子: 假设你现在要开发一个项目A,使用的Flask的版本是0.12.2,过几年你又要开发一个项目B,但是这时候Flask的版本已经升级到1.0了,但其实Flask0.12.2版本和Flask1.0版本是不兼容的,怎么办呢?你不可能把Flask0.12.2版本卸掉重新安装吧,这样的项目A不是都不能用了? 我们安装python虚拟环境就是为了解决兼容性问题。虚拟环境会把项目A的0.12.2版本当做一个盒子,把项目Bde 1.0版本当...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果