Qt6.x源码静态编译

0、参考文档

Qt Configure Options | Qt 6.9

Qt for Windows - Building from Source | Qt 6.9

QT6.7.2源码编译 静态库 动态库 (MSVC) - Dir-A - 博客园

1、安装VS2022环境

VS2022包括社区版、专业版、企业版,安装哪个版本都可以。

下载地址:下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux

安装时,工作负载(workloads)必须选择“桌面C++开发”,右边的详细列表勾上“cmake”即可。

VS2022安装完成后,自带了 ninja和cmake组件,不必额外安装了。

打开cmd.exe, 输入: where ninja 和 where cmake , 确认这些组件已经安装好了,否则需要额外安装。

2、下载并安装python

打开cmd.exe, 输入: where python,如果没有安装,则需要安装,要求3.x版本。

下载地址:https://www.python.org/downloads/windows/, 选择 windows x64版本,下载完成后默认安装即可。也可以在系统自带的“微软商店”下载安装。

3、下载Qt源码

官方下载地址:Index of /archive/qt 

清华大学镜像:Index of /qt/archive/qt/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

选择当前最新版本下载。

4、编译Qt源码

可选择MSVC或MinGW。在windows平台,我们选择MSVC,调试和运行都友好。

1)配置编译选项

在D盘新建文件夹“BuildStaticQt”,拷贝源码到这里,然后解压到当前目录,进入 qtbase\mkspecs\common 目录,打开msvc-desktop.conf文件,将 -MD 全部替换为 -MT

2)配置make选项

在文件夹“BuildStaticQt”新建子目录“build”,打开cmd.exe,依次执行命令以下命令:

  1. “D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat” amd64 (具体路径要看VS安装到了哪里)。
  2. cd /d d:\BuildStaticQt\build
  3. ..\qt源码目录\configure.bat -static -static-runtime --prefix="D:\Qt\qt6.9-static" -confirm-license -opensource  -debug-and-release

说明:

qt6.9 : 当前源码是6.9版本,如果是其他版本请修改为相应的版本号;

-static : 静态编译Qt;

-static-runtime : 把VC的运行时打包到exe文件;

--prefix : Qt的安装路径;

-confirm-license :同意源码使用协议;

-opensource : 使用开源协议;

-release :编译release版本;

如果configure 报错,删除源码目录的CMakeCache.txt缓存文件,然后根据错误提示修改configure选项,再次执行。

3)编译

在上面的命令行中执行命令:cmake --build . --parallel

等待完成,时间比较长,几个小时。

可能有些组件会编译失败(如Qt6Pdf.lib),如果不是必须组件,可以不理会。

4)安装

 在上面的命令行中执行命令:cmake --install .

5)完成

可以把 D:\BuildStaticQt目录删除,也可以留着,下次修改了某些配置选项后继续编译就比较快了。

5、写demo程序

从官网下载安装QtCreator(如果已经安装了其他Qt版本,则会自带QtCreator,不用再安装)。

1)添加“Qt版本”。

打开QtCreator,点击菜单栏【编辑】-->【首选项】, 在“首选项”对话框中按下图操作:

然后添加静态Qt版本就完成了,见下图:

2)添加“构建套件”

按下图操作:

3)Demo程序

点击菜单栏【文件】-->【新建工程】,然后按下图操作:

其他向导界面保持默认,“选择构建套件”按下图选择:

按向导完成新建工程,然后编译、运行,demo完成。

把demo程序拷贝到其他未安装Qt编译环境的电脑,双击运行,如果成功了,说明环境静态Qt环境大功告成!见下图:

6、LGPL协议注意事项

使用静态编译版本的Qt开发环境编译的产品,有被迫开源的风险,要注意预判和隔离风险。可以把产品分为几个部分以隔离此类风险,如:保密代码.dll ,非保密代码.exe。其中保密代码.dll不使用“静态Qt”编译,不需要开源;非保密代码.exe使用“静态Qt”编译,需要开源。

使用Qt的预编译版本,或者自己编译为动态库版本,则不需要开源,但是部署时需要带上Qt的运行时(一堆Qtxxx.dll)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值