前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Qt CMake怎能让我继续使用你

Qt CMake怎能让我继续使用你

作者头像
Qt君
发布于 2023-03-17 07:29:45
发布于 2023-03-17 07:29:45
9610
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程

  最近开发ARM应用,使用Qt 6.2版本交叉编译源码,编译倒是没什么问题,也很快就编译好了。正准备使用Qt库编译写好的程序时,发现使用QMake编译不过了,报Qml缺少连接,最后询问了维护人员,是一个内部的问题,还没有修改好,建议使用CMake编译,无奈将项目pro工程修改为CMake工程,如无意外就编译通过了。

  使用几天发现后,使用QtCreator支持的Qt CMake工程,编译时间比QMake的长,大约慢30%到50%的时间,QtCreator卡顿频繁,在频繁读取文件,修改Qml文件后编译运行时间更长。当时想可能是QtCreator的问题了,于是使用命令行执行编译,结果一样的编译的慢啊。

  后来发现,编译Qml前Qt CMake会复制Qml,类型文件和依赖文件到编译目录中,这就大大降低了编译速度。

  目前来看,Qt CMake还不是很成熟,至少它优化得不太好。回想Qt 6.0更新的时候都没有将全部Qt 5.15版本的模块移植进来,搞了一个按揭移植,移植到Qt 6.4也没有完全移植完成,比如Location模块,文末有截图和访问链接证实。

  QMake构建Qt源码实在太难扩展,但换做CMake构建的确是构建方便了,如果只为构建Qt源码方便,那大可不必将QMake项目切换到CMake项目,如果没接触过CMake的工程师,贸然切换,只会徒增开发成本。

  这里不是指CMake不好,平时君君也会首选CMake来管理跨平台纯C项目,用起来也很棒。这里的不好是指Qt CMake不好,一堆moc,uic,qml代码生成管理工具,都通过CMake处理,目前看来是优化得不太好。

  君君最后建议再等等Qt的更新,Qt 6.x的最后一个版本或者Qt 7.0以上才切换到CMake管理项目吧。

详情:https://www.qt.io/blog/qt-6.4-released

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Airbnb从Buck 迁移到 Bazel,大幅改善开发者体验
随着其他组织将他们的构建管道迁移到Bazel 之后,Airbnb 也发布了一个详细的说明,分享了他们弃用 Buck 并改善构建时间以及项目生成和加载时间的过程。
深度学习与Python
2024/02/29
1710
Airbnb从Buck 迁移到 Bazel,大幅改善开发者体验
Bazel 7 发布:全新模块化依赖管理、无字节构建与多目标构建性能提升
最近在 BazelCon 23 上宣布,Bazel 7 推出了多年来一直在开发中的一系列新功能,其中包括全新的模块化外部依赖管理系统 Bzlmod、全新优化的“Build without the Bytes”模式、得益于 Project Skymeld 的多目标构建性能改进等等。
深度学习与Python
2024/01/04
4590
Spotify 移动工程平台迁移:将 Android 和 iOS 代码库迁移到 Bazel
作者 | Aditya Kulkarni 译者 | 刘雅梦 策划 | 丁晓昀 最近,Spotify 移动工程团队详细介绍了他们最近的平台迁移经验。根据移动工程战略计划,该团队将他们的 Android 和 iOS 代码库迁移到了谷歌的开源构建系统 Bazel 上。 来自 Spotify 移动工程团队的 Mariana Ardoino 和 Raul Herbster 在一篇博客文章中探讨了从迁移中获得的经验教训。迁移工作影响了 Spotify 的 100 多个团队。团队认识到,不同规模和复杂性的迁移将
深度学习与Python
2023/03/29
4200
Spotify 移动工程平台迁移:将 Android 和 iOS 代码库迁移到 Bazel
Slack 工程师如何解决最常见的移动开发痛点
作者 | Sergio De Simone 译者 | 马可薇 策划 | 丁晓昀 Slack 的开发者体验团队是由 8 个人专门负责的,该团队是为解决伴随组织和开发团队壮大而不断增长的成本问题。在 Slack 开发过程中成本最为高昂的部分,在于工程师需花费大量精力合并代码冲突、长时间的 CI 工作、片状测试和 CI 基础设施故障。 虽然可以让开发者们学习部分问题的解决方法,但随着团队的成长,所要花费的时间和成本是极不现实的。拥有一个特殊团队专注解决这类问题,不仅可以让开发团队效率更高,还能确保开发团
深度学习与Python
2023/03/29
5170
Slack 工程师如何解决最常见的移动开发痛点
如何解决 iOS 环境搭建与 APP 打包速度问题
随着 Flutter 等跨端框架的出现,业务开发同学经常需要在 Android/IOS 上跨端进行业务开发,问题定位等。新的不熟悉的环境的搭建总会遇到各种各样的问题,导致搭建失败,特别是 IOS 开发环境,是最复杂的,不仅环境搭建繁琐,而且切分支后的打包速度很慢,所以我们设计实现了两个工具,用于优化闲鱼 IOS 开发体验。
编程怪才-凌雨画
2020/09/18
2.6K0
Kotlin Multiplatform Mobile 进入 Beta 测试
作者 | Sergio De Simone 译者 | 平川 策划 | 丁晓昀 Kotlin Multiplatform Mobile 由 JetBrains 创建,支持使用 Kotlin 从单个代码库创建具有原生 UI 的 iOS 和 Android 应用。Kotlin Multiplatform Mobile 已经退出实验阶段,进入 Beta 测试。 Kotlin Multiplatform Mobile 是一个用于 iOS 和 Android 应用开发的 SDK,它让你可以将网络、数据存储和分
深度学习与Python
2023/03/29
1.3K0
Kotlin Multiplatform Mobile 进入 Beta 测试
如果要使用 Bazel ,我会考虑什么?
{Fast, Correct} - Choose two Build and test software of any size, quickly and reliably
donghui
2019/10/30
1.5K0
如果要使用 Bazel ,我会考虑什么?
谷歌的Bazel构建工具
在当今的软件开发世界中,构建工具的选择对于提高开发效率、维护代码质量以及提升团队协作能力都至关重要。谷歌作为全球技术巨头,为了解决大规模代码构建和测试的挑战,开发了一款名为Bazel的构建工具。Bazel具有强大的功能和灵活性,已成为开源社区中的明星工具。本文将深入探讨谷歌的Bazel构建工具及其在软件开发中的应用。
DevOps持续交付
2023/12/13
6260
谷歌的Bazel构建工具
我的自动化构建之路之 Jenkins+Fastlane+Github内网测试
可能看到这一篇文章很多人认为 Jenkins就可以实现自动化打包,并且 Fastlane配置 完毕之后打包更加的轻松。干嘛还搞在一起,这不是重复了吗。
君赏
2018/09/07
1.7K0
🧭 React Native 版本升级指南
React Native 作为一款跨端框架,有一个最让人头疼的问题,那就是版本更新。尤其是遇到大版本更新,JavaScript、iOS 和 Android 三端的配置构建文件都有非常大的变动,有时候三者的配置文件又互相耦合在一起,往往牵一发而动全身。
卤代烃
2022/02/23
4.8K0
🧭 React Native 版本升级指南
手把手教你利用Jenkins持续集成iOS项目
众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段。用户们都是很挑剔的。如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一批的用户在使用中纷纷出现闪退bug,轻则,很可能前期推广砸的钱都白费了,重则,口碑不好,未来也提升不起用户量来了。静下心来分析一下问题的原因,无外乎就是质量没有过关就上线了。除去主观的一些因素,很大部分的客观因素我觉得可以被我们防范的。根据大神们提出的一套开发规范建议,CI + FDD,就可以帮助我们极大程度的解决客观因素。本文接下来主要讨论 Continuous Integration 持续集成(简称CI)
一缕殇流化隐半边冰霜
2018/08/29
1.6K0
手把手教你利用Jenkins持续集成iOS项目
手把手教你利用Jenkins持续集成iOS项目
前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段。用户们都是很挑剔的。如果一个公司的推广团队好不容易砸了重金推广了一个APP,好不容易有了一些用户,由于一次线上的bug导致一批的用户在使用中纷纷出现闪退bug,轻则,很可能前期推广砸的钱都白费了,重则,口碑不好,未来也提升不起用户量来了。静下心来分析一下问题的原因,无外乎就是质量没有过关就上线了。 除去主观的一些因素,很大部分的客观因素我觉得可以被我们防范的。根据大神们提出的一套开发规范建议,CI + FDD,就可以帮助我们极大程
DevOps时代
2018/06/22
2.1K0
[Bazel]自定义工具链
本文会讲述 Bazel 自定义工具链的两种方式,Platform 和 Non-Platform 方式。会存在这两种方式的原因是 Bazel 的历史问题。例如,C++ 相关规则使用 --cpu 和 --crosstool_top 来设置一个构建目标 CPU 和 C++ 工具链,这样就可以实现选择不同的工具链构建 C++ 项目。但是这都不能正确地表达出“平台”特征。使用这种方式不可避免地导致出现了笨拙且不准确的构建 APIs。这其中导致了对 Java 工具链基本没有涉及,Java 工具链就发展了他们自己的独立接口 --java_toolchain。因此非平台方式(Non-Platform)的自定义工具链实现并没有统一的 APIs 来规范不同语言的跨平台构建。而 Bazel 的目标是在大型、混合语言、多平台项目中脱颖而出。这就要求对这些概念有更原则的支持,包括清晰的 APIs,这些 API 绑定而不是分散语言和项目。这就是新平台(platform)和工具链(toolchain) APIs 所实现的内容。
别打名名
2020/08/11
4.9K8
Spotify Portal for Backstage 简化平台工程
创建 Backstage 的路径涉及尊重 Spotify 的协作文化和开发人员自主权。其新门户旨在将这种精神带给所有 Backstage 用户。
云云众生s
2024/05/02
1720
Spotify Portal for Backstage 简化平台工程
占坑!利用 JenKins 持续集成 iOS 项目时遇到的问题
持续集成(Continuous Integration,简称CI)是一种软件开发实践:许多团队频繁地集成他们的工作,每位成员通常进行日常集成,进而每天会有多种集成。
DevOps时代
2018/08/01
2.8K0
占坑!利用 JenKins 持续集成 iOS 项目时遇到的问题
程序员面试闪充--Cocoapods的详解
在开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”。 一、介绍 CocoaPods是开发OSX和iOS应用程序的一个第三方库的依赖管理工具。利用CocoaPods,可以定义自己的依赖关系(称作pods),并且随着时间的变化,以及在整个开发环境中对第三方库的版本管理非常方便。 优点:快速查找新的第三方库。替换旧的框架(缩短开发周期和提升软件质量)/
谦谦君子修罗刀
2018/05/02
2.3K0
程序员面试闪充--Cocoapods的详解
【Unity开发小技巧】打包IOS版本须知流程(移动)
Unity是个开放性的平台,打包时也可以选择多种打包类型,几乎包含了所有的平台,目前主流Android,iOS平台,Android平台可以直接使用Unity自行打包,但iOS平台需要借助Mac电脑进行打包,本博客就iOS打包进行一个简单的说明,从开发到上线AppStore的所有流程。
全栈程序员站长
2022/09/07
6K0
【Unity开发小技巧】打包IOS版本须知流程(移动)
Flutter 搭建 iOS 命令行服务打包发布全保姆式流程
在以前的 《 Android 和 iOS 打包提交审核指南》 里介绍了 Flutter 下打包 Android 和 iOS 的指南,不过这部分内容主要介绍的是如何在本地打包发布流程。
GSYTech
2021/04/23
3.5K1
Flutter 搭建 iOS 命令行服务打包发布全保姆式流程
Travis CI 教程:入门
在这个 Travis CI 教程中,学习如何设置流行的持续集成服务,并与 GitHub 集成,以便自动运行测试。
iOSDevLog
2019/05/07
5.7K0
Travis CI 教程:入门
iOS应用构建与部署小结
上篇文章介绍了Objective-C的基本概念,本文就来接着看如何创建我们的第一个简单iOS应用, 本着简单可复现的方式,我们会以尽可能小的成本来构建并在真机运行iOS应用。 也就是说, 不用越狱, 也无需开发者账号。当然,一台iPhone手机还是需要的,最好还有一台Mac。
evilpan
2023/02/12
2.2K0
iOS应用构建与部署小结
推荐阅读
相关推荐
Airbnb从Buck 迁移到 Bazel,大幅改善开发者体验
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档