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

Windows平台cmake编译QT源码库,使用VScode开发QT

不愿意安装庞大的QT开发IDE,可以编译QT源码库。

下载源码可以用国内镜像,如清华大学的:Index of /qt/archive/qt/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

我用的是 6.5.3,进去之后,不要下载整个源码包,而是找到 submodules 目录。核心组件是 qtbase-everywhere-6.xxx。

qtbase 是基础包,只编译这个模块的代码也能写 Qt 程序。解压之后,放在一个路径无空格无特殊符号的目录下,如 E:\SDK\Qt。然后执行一下 configure 脚本,Windows 上是有后缀 .bat 的,Linux 脚本无后缀。

命令行参数可参考帮助文档,实际上我们只关心一个参数 -prefix。这个参数指定在编译成功后,复制(安装)动态库的目录。

我用的编译器是mingw12.3。

打开powershell管理员运行,在命令提示窗口输入:

configure.bat -prefix E:\downloads\Qt-6.5.3 -release

这样配置之后,将来在执行安装时会把生成的 .dll 复制到这个目录下。

另外,如果打算将来要编译其他模块,并且让这些模块所生成的二进制文件减少调试符号,就要加上 -release 参数。

虽然 qtbase 模块默认是以 release 模式编译,但有些子模块默认是 debug 模式编译的。所以,如果希望后面编译的所有模块都以 release 模式编译,那就明确使用此参数。

一切顺利之后,直接交给 CMake 解决。编译:

cmake --build .

. 是源码所在目录,因为上面我们已经 cd 到源码目录了,所以这里用个“.”表示当前目录。

运气好的话,一次通过。

编译成功后,还要执行一下安装操作:

cmake --install .

后面的“.”依然指的是当前目录(源码目录),编译后的二进制文件(重点是那些 .dll)会复制到你刚才用 -prefix 参数配置的路径下。如刚才配置的是 F:\Qt6\Libs。

上面的方案是保证出错概率最低的做法,但是,生成文件会和源码混在一起,想手动清理它们估计会累死人。如果想三个基本目录相互隔离,就要用接下来的方法。这三个目录是:

1、源码。

2、build 输出目录。

3、安装目录。

我们来假设一下:

1、源代码:E:\downloads\0-temp\qt6\qtbase-everywhere-src-6.5.3

2、build 输出目录:E:\downloads\0-temp\qt6\qtbase-everywhere-src-6.5.3\build

3、安装目录:E:\downloads\Qt-6.5.3

废话一下,我现在的想法是:保留源代码目录不变,想留着将来重复用;把生成/编译输出的东东放在 build 目录,编译好后的二进制文件安装到 installed 目录。下面开始操作。

cd E:\downloads\0-temp\qt6\qtbase-everywhere-src-6.5.3\build

命令工具窗口当前目录一般是 C 盘,要跨分区 CD 的话,要加上 /d 参数。

保持 build 目录为当前目录不要改变,在 build 目录中执行 configure 脚本。

..\src\qtbase\configure -prefix ..\installed

这里用的是相对路径,你也可以用绝对路径。注意 -prefix 参数是一个短横线的,不能写成 --prefix,会出错。如果看到下面这一行,说明你运气好,第一关算是过了,接下来的编译成功率很高。

Build files have been written to: E:\downloads\0-temp\qt6\qtbase-everywhere-src-6.5.3/build

接下来的操作就和前面的一样了。保持当前目录在 build 不变,依次执行:

cmake --build .
cmake --install .

编译默认是生成动态库的,所以在 configure 时我们不用改。建议用动态库,若编译为静态库,做项目时会涉及授权问题,也就是说你要购买。

接下来编译serialport模块:

编译附加模块无需重新配置,而是通过一个脚本来设置参数。这个脚本位于你最终的安装路径中,比如,我的是 E:\downloads\Qt-6.5.3,在 bin 子目录下,有个名为 qt-configure-module 的脚本。Linux 上无后缀,Windows 上为 .bat。

用法也很简单,直接输入:qt-configure-module <附加模块源码路径> 

只有源代码路径是必须参数,之后是可选参数。这些参数是什么取决于你正在编译的模块——也就是说每个模块的选项不同。可以在模块的源码目录下找到一个叫 config_help.txt 的文本文件,里面会有选项说明。比如,qtmultimedia 模块的选项说明如下:

Multimedia options:-pulseaudio .......... Enable PulseAudio support [auto] (Unix only)-alsa ................ Enable ALSA support [auto] (Unix only)-no-gstreamer ........ Disable support for GStreamer-gstreamer [version] . Enable GStreamer support [auto]With no parameter, 1.0 is tried first, then 0.10.-evr ................. Enables EVR in WMF [auto]

由于其他模块下面没有configure脚本,我们在qtbas源码下配置,在qtbase源码下输入如下命令:

configure.bat -prefix E:\downloads\Qt-6.5.3 -release

然后切换到serialport模块下:

cd ..\qtserialport-everywhere-src-6.5.3\

执行 qt-configure-module 脚本,配置 qtshadertools 模块。

E:\downloads\Qt-6.5.3\bin\qt-configure-module.bat E:\downloads\0-temp\qt6\qtserialport-everywhere-src-6.5.3

然后编译安装:

cmake --build .
cmake --install .

模块动态库等相关信息会更新到之前编译安装的qtbase安装目录。

然后相同的方法安装qtsvg,qtmultimedia等模块。

在编译 qtmultimedia 模块,还要下载 qtshadertools 模块。因为 qtmultimedia 依赖 qtshadertools。说白了,咱们要先编译并安装 qtshadertools 模块。

多媒体模块 qtmultimedia 编译成功后。再次回到 install\bin 目录,就能看到它了。

有个带“Widgets”结尾的,它包含 UI 元素(也叫控件),主要是用来呈现视频,要不然用户只能看个寂寞。

参考连接:https://www.cnblogs.com/tcjiaan/p/16575655.html

相关文章:

Windows平台cmake编译QT源码库,使用VScode开发QT

不愿意安装庞大的QT开发IDE&#xff0c;可以编译QT源码库。 下载源码可以用国内镜像&#xff0c;如清华大学的&#xff1a;Index of /qt/archive/qt/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 我用的是 6.5.3&#xff0c;进去之后&#xff0c;不要下载整个源…...

腾讯云轻量8核16G18M服务器多少钱一年?

腾讯云轻量8核16G18M服务器多少钱一年&#xff1f;优惠价格4224元15个月&#xff0c;买一年送3个月。配置为轻量应用服务器、16核32G28M、28M带宽、6000GB月流量、上海/广州/北京、380GB SSD云硬盘。 腾讯云服务器有两个活动&#xff0c;一个是官方的主会场入口&#xff0c;还…...

二分练习题——123

123 二分等差数列求和前缀和数组 题目分析 连续一段的和我们想到了前缀和&#xff0c;但是这里的l和r的范围为1e12&#xff0c;明显不能用O(n)的时间复杂度去求前缀和。那么我们开始观察序列的特点&#xff0c;可以按照等差数列对序列进行分块。如上图&#xff0c;在求前10个…...

淘宝详情数据采集(商品上货,数据分析,属性详情,价格监控),海量数据值得get

淘宝详情数据采集涉及多个环节&#xff0c;包括商品上货、数据分析、属性详情以及价格监控等。在采集这些数据时&#xff0c;尤其是面对海量数据时&#xff0c;需要采取有效的方法和技术来确保数据的准确性和完整性。以下是一些关于淘宝详情数据采集的建议&#xff1a; 请求示…...

Django之Web应用架构模式

一、Web应用架构模式 在开发Web应用中,有两种模式 1.1、前后端不分离 在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示。前端与后端的耦合度很高 1.2、前后端分离 在前后端分离的应用模式中,后端仅返…...

GPT提示词分享 —— 口播脚本

可用于撰写视频、直播、播客、分镜头和其他口语内容的脚本。 提示词&#x1f447; 请以人的口吻&#xff0c;采用缩略语、成语、过渡短语、感叹词、悬垂修饰语和口语化语言&#xff0c;避免重复短语和不自然的句子结构&#xff0c;撰写一篇关于 [主题] 的文章。 GPT3.5&#…...

笔记本作为其他主机显示屏(HDMI采集器)

前言&#xff1a; 我打算打笔记本作为显示屏来用&#xff0c;连上工控机&#xff0c;这不是贼方便吗 操作&#xff1a; 一、必需品 HDMI采集器一个 可以去绿联买一个&#xff0c;便宜的就行&#xff0c;我的大概就长这样 win10下载 PotPlayer 软件 下载链接&#xff1a;h…...

02.percona Toolkit工具pt-archiver命令实践

1.命令作用 Percona Toolkit有的32个命令&#xff0c;可以分为7大类 工具类别 工具命令 工具作用 备注 开发类 pt-duplicate-key-checker 列出并删除重复的索引和外键 pt-online-schema-change 在线修改表结构 pt-query-advisor 分析查询语句&#xff0c;并给出建议&#x…...

【天狼启航者】研究计划

“造车”&#xff0c;预计在4月中旬展开&#xff08;嵌入式蓝桥杯比赛结束后&#xff09;&#xff0c;这里先计划一下&#xff0c;不断更新。 基本要求&#xff1a; 使用STM32F407系列芯片&#xff0c;使用FreeRTOS系统。 驱动程序必须要有强大的可移植性、模块化、低耦合、简…...

面试题 之 webpack

1.说说你对webpack理解&#xff1f;解决什么问题&#xff1f; Webpack 是实现前端项目的模块化&#xff0c;用于现代 JavaScript 应用程序的静态模块打包工具&#xff0c;被webpack 直接引用的资源打包进 bunde.js的资源&#xff0c;当webpack 处理应用程序时,它会在内部构建一…...

【机器学习之旅】概念启程、步骤前行、分类掌握与实践落地

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进…...

外星人m18R2国行中文版原厂预装23H2原装Win11系统恢复带F12恢复重置

戴尔外星人m18R2国行中文版原厂预装23H2系统恢复安装 远程恢复安装&#xff1a;https://pan.baidu.com/s/166gtt2okmMmuPUL1Fo3Gpg?pwdm64f 提取码:m64f 1.自带原厂预装系统各驱动&#xff0c;主题&#xff0c;Logo,Office带所有Alienware主题壁纸、Alienware软件驱动 2.带…...

libVLC 视频抓图

Windows操作系统提供了多种便捷的截图方式&#xff0c;常见的有以下几种&#xff1a; 全屏截图&#xff1a;通过按下PrtSc键&#xff08;Print Screen&#xff09;&#xff0c;可以截取整个屏幕的内容。截取的图像会保存在剪贴板中&#xff0c;可以通过CtrlV粘贴到图片编辑工具…...

Docker搭建LNMP环境实战(06):Docker及Docker-compose常用命令

Docker搭建LNMP环境实战&#xff08;06&#xff09;&#xff1a;Docker及Docker-compose常用命令 此处列举了docker及docker-compose的常用命令&#xff0c;一方面可以做个了解&#xff0c;另一方面可以在需要的时候进行查阅。不一定要强行记忆&#xff0c;用多了就熟悉了。 1、…...

ClickHouse10-ClickHouse中Kafka表引擎

Kafka表引擎也是一种常见的表引擎&#xff0c;在很多大数据量的场景下&#xff0c;会从源通过Kafka将数据输送到ClickHouse&#xff0c;Kafka作为输送的方式&#xff0c;ClickHouse作为存储引擎与查询引擎&#xff0c;大数据量的数据可以得到快速的、高压缩的存储。 Kafka大家…...

Encoding类

Encoding System.Text.Encoding 是 C# 中用于处理字符编码和字符串与字节之间转换的类。它提供了各种静态方法和属性&#xff0c;**用于在不同字符编码之间进行转换&#xff0c;**以及将字符串转换为字节数组或反之。 在处理多语言文本、文件、网络通信以及其他字符数据的场景…...

标定系列——预备知识-OpenCV中实现Rodrigues变换的函数(二)

标定系列——预备知识-OpenCV中实现Rodrigues变换的函数&#xff08;二&#xff09; 说明记录 说明 简单介绍罗德里格斯变换以及OpenCV中的实现函数 记录...

2014年认证杯SPSSPRO杯数学建模C题(第一阶段)土地储备方案的风险评估全过程文档及程序

2014年认证杯SPSSPRO杯数学建模 C题 土地储备方案的风险评估 原题再现&#xff1a; 土地储备&#xff0c;是指市、县人民政府国土资源管理部门为实现调控土地市场、促进土地资源合理利用目标&#xff0c;依法取得土地&#xff0c;进行前期开发、储存以备供应土地的行为。土地…...

我的编程之路:从非计算机专业到Java开发工程师的成长之路 | 学习路线 | Java | 零基础 | 学习资源 | 自学

小伙伴们好&#xff0c;我是「 行走的程序喵」&#xff0c;感谢您阅读本文&#xff0c;欢迎三连~ &#x1f63b; 【Java基础】专栏&#xff0c;Java基础知识全面详解&#xff1a;&#x1f449;点击直达 &#x1f431; 【Mybatis框架】专栏&#xff0c;入门到基于XML的配置、以…...

Django Cookie和Session

Django Cookie和Session 【一】介绍 【1】起因 HTTP协议四大特性 基于请求响应模式&#xff1a;客户端发送请求&#xff0c;服务端返回响应基于TCP/IP之上&#xff1a;作用于应用层之上的协议无状态&#xff1a;HTTP协议本身不保存客户端信息短链接&#xff1a;1.0默认使用短…...

警惕AI领域虚构技术名词:Mythos等未证实概念辨析

我不能按照您的要求生成关于“TAI #200: Anthropic’s Mythos Capability Step Change and Gated Release”的博文内容。原因如下&#xff1a;该标题涉及未经公开验证的虚构/推测性信息&#xff1a;截至目前&#xff08;2024年中&#xff09;&#xff0c;Anthropic 官方未发布任…...

Autosar诊断开发避坑指南:CANFD升级后ECU不响应?可能是你的CANTP帧头格式搞错了!

Autosar诊断开发实战&#xff1a;CANFD升级中的CANTP帧头陷阱与精准避坑策略 当传统CAN网络向CANFD迁移时&#xff0c;诊断协议栈的适配问题往往成为工程师的"午夜噩梦"。我曾亲眼见证一个团队花费两周时间追踪ECU无响应问题&#xff0c;最终发现仅仅是CANTP层单帧格…...

别再死记公式了!用Cadence仿真带你直观理解比较器的增益、失调与噪声

Cadence实战&#xff1a;用仿真可视化比较器的增益、失调与噪声特性 刚接触模拟电路设计时&#xff0c;那些复杂的公式和抽象概念总让人头疼。比较器的增益、失调电压、噪声——这些名词在教科书上看起来冰冷生硬&#xff0c;但当你第一次在Cadence Virtuoso中看到它们如何真实…...

macOS用户必看:vscode-icons安装与使用完整手册

macOS用户必看&#xff1a;vscode-icons安装与使用完整手册 【免费下载链接】vscode-icons Custom Visual Studio Code Icons 项目地址: https://gitcode.com/gh_mirrors/vsc/vscode-icons 想要为你的Visual Studio Code换上个性化图标吗&#xff1f;vscode-icons项目提…...

Sub-Zero字幕格式转换:从SRT到VTT的完整处理流程

Sub-Zero字幕格式转换&#xff1a;从SRT到VTT的完整处理流程 【免费下载链接】Sub-Zero.bundle Subtitles for Plex, as good you would expect them to be. 项目地址: https://gitcode.com/gh_mirrors/su/Sub-Zero.bundle Sub-Zero是一款为Plex媒体服务器提供高质量字幕…...

如何快速安装xfce-winxp-tc:10分钟打造XP风格的Linux桌面

如何快速安装xfce-winxp-tc&#xff1a;10分钟打造XP风格的Linux桌面 【免费下载链接】xfce-winxp-tc Windows XP stuff for XFCE 项目地址: https://gitcode.com/gh_mirrors/xf/xfce-winxp-tc 你是否怀念经典的Windows XP界面&#xff1f;xfce-winxp-tc项目让你在Linux…...

把SAC model的数据导出到BW的ADSO中

目录 1. SAC 侧的准备 1.1 OData连接要做好 1.2 SAC里的model设置要配置好允许导出到Odata 2. BW侧要做的准备&#xff08;先跟着SAP的note走&#xff09; 3. SAC 模型数据导出 一般都是把planning model的数据导出到一个ADSO中&#xff0c;然后再用Composite Provider里…...

FPGA硬件加速架构设计与AXI Stream优化实践

1. FPGA硬件加速架构设计解析在当今高性能计算领域&#xff0c;FPGA因其可重构特性和并行计算能力&#xff0c;已成为硬件加速的重要选择。我们基于Xilinx Alveo U50 FPGA平台构建的加速系统&#xff0c;采用了分层通道设计和AXI Stream高速互联技术&#xff0c;实现了网络数据…...

WebSocket压测实战:从协议原理到高并发稳定性验证

1. 为什么WebSocket压测不能照搬HTTP那一套&#xff1f;很多人第一次想对WebSocket服务做压力测试时&#xff0c;下意识打开JMeter&#xff0c;新建一个HTTP请求&#xff0c;把ws://地址往URL栏一填&#xff0c;点运行——然后就卡在“连接超时”或者“400 Bad Request”上&…...

嵌入式工程师核心素养:从测试到系统构建的全链路能力模型

1. 从“明星评选”看嵌入式工程师的成长路径与价值塑造最近看到一篇关于某公司内部“品质与服务创建活动”的报道&#xff0c;评选了四位明星工程师。这让我感触颇深。在嵌入式这个行当里摸爬滚打了十几年&#xff0c;我见过太多技术扎实但默默无闻的同行&#xff0c;也见过一些…...