因项目需要,客户需要一个单独的exe程序,被迫自己静态编译一版qt
本次需求只是需要使用widget、qml、network(需要openssl)模块,其他模块只是顺带编译,所以本文档仅供有需要的小伙伴参考,若需要特定模块,请自行搭建相关编译环境
Qt官方提供动态库开发环境,可以直接在线下载(Qt5.15开始,开源用户不再提供离线安装包),发布时,有一堆动态库
若直接使用静态编译,可以把所有库都放到一个exe程序中,不再依赖其他动态库或插件。但一般静态编译不包括编译器的运行时,在未安装msvc的电脑上,需要先安装微软VC++运行库合集(可通过360软件库直接下载)
所以本次考虑,直接将编译器的运行时,直接加入,到时只有一个exe程序即可运行
注:这样做,可能导致无法正常加载一般的第三方库,需要使用同一编译器编译带运行时的第三方库
1.msys
网上安装教程比较多,就不再重复了,需要安装flex和bison
命令如下(时间所限,未验证)
2.vs2019
笔者使用的是社区版,这个就不重复了,记得选择C++开发环境
3.openssl
参考下笔者的文档
编译OpenSSL库(win10+msvc2022_x64)-CSDN博客
需要使用带运行时的openssl3.3静态库
4.python
笔者安装的是python3.10的版本(编译qml相关,需要)
5.ninja
笔者使用的是Qt在线安装包里的
6.cmake
笔者使用的是Qt在线安装包里的,版本号3.29.3
7.perl
笔者直接使用360软件管家下载的ActivePerl 64位(不清楚是否需要,先加上了)
8.Ruby
笔者直接使用360软件管家下载的Ruby(不清楚是否需要,先加上了)
https://download.qt.io/archive/qt/6.6/6.6.3/single/qt-everywhere-src-6.6.3.zip
1.将源码解压到一目录中,注意目录不要出现空格或中文,目录名也不要太长
笔者解压到了G:Qt6.6.3Srcqt-everywhere-src-6.6.3
2.修改编译配置文件
打开{qt_source_dir}qtbasemkspecscommonmsvc-desktop.conf
笔者对应目录为G:Qt6.6.3Srcqt-everywhere-src-6.6.3qtbasemkspecscommonmsvc-desktop.conf
使用文本编译器打开查找-MD,全部替换成-MT,笔者修改后如下
3.打开vs2019的控制台
切换到源码目录,笔者的目录如下
4.配置环境变量
执行以下指令
以上是笔者配置的环境变量,需要根据自己的实际情况配置下
笔者是直接在控制台窗口中进行的,也可以直接配置到系统的环境变量中
5.配置qt源码
建议使用影响编译,这样不会污染源码目录
笔者执行的命令如下:
部分配置选项解释:
-static
启用静态编译
-static-runtime
启用静态运行时
-prefix "D:Qt6.6.3msvc2019_64_static"
预设安装目录
-confirm-license -opensource
是开源的
-debug-and-release
同时编译debug库和release库
-platform win32-msvc
使用msvc编译
-opengl dynamic 动态链接opengl库
-openssl-linked
直接链接openssl库编译(推荐)
若是需要进一步配置Qt源码,可以使用控制台打开cmake-gui.exe,直接打开编译目录
配置完成后,点击配置,会出现配置结果列表,笔者比较关心的是openssl是否已启用
确认无误后,直接点击生成
6.编译Qt源码
直接执行如下命令:
注:网上有说,开启多线程编译,有时会因编译的先后顺序不对,导致中止编译,只要重新执行下命令就可以继续编译
7.安装Qt
直接执行如下 命令
笔者已经编译好的Qt6.6.3静态库(静态运行时),比较大,就形成了两个包
参考资料:
Building Qt Sources | Qt 6.9
Qt for Windows - Building from Source | Qt 6.9
Qt Configure Options | Qt 6.9
声明:因笔者本次编译时间过紧,并未进行全部验证
到此这篇Pem文件在线(pem后缀文件)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/hd-yjs/20694.html