Windows11 + VS2022 编译 Qt5.15.5src 使其支持静态编译.
最近用到了Qt Gui 但是发现官方安装器中仅提供动态库版本 静态库的需要自己搞定…
坑:
一个是解压缩的问题 一个是路径长度问题 还有一个坑爹的静态编译 运行报插件错误的问题
1:首先是下载源代码时 在windows上 尽量下载.zip压缩格式的 虽然大一些 不然下载.tar.xz压缩格式后使用某60解压 居然少文件…麻了
2:官方的仓库中下载下来的文件名都很长 比如 qt-everywhere-opensource-src-5.15.5.zip 解压后如果在套上一层 就成了qt-everywhere-opensource-src-5.15.5/qt-everywhere-opensource-src-5.15.5/… 这在编译到某个路径比较长的文件时就会报错…这在其他文章中居然没提到过… 当然路径中不要出现中文.
3:关于静态编译后报插件错误的
只需要在main.cpp中加入
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin);
原因貌似是windows相关的某些库未被静态编译到程序中 也有可能是我安装了qt的官方版本串了…
相关问题参考:https://stackoverflow.com/questions/16773789/qt5-static-build-yields-failed-to-load-platform-plugin-windows
题外话:
qt5.x支持 windows7系统估计也是现在大多数人坚持的理由吧…
开始:
1:
安装VS2022
安装Python 3.x https://www.python.org/ftp/python/3.11.0/python-3.11.0-amd64.exe (如在VS中安装了py环境 那么就不用管了)
安装prel https://strawberryperl.com/download/5.32.1.1/strawberry-perl-5.32.1.1-64bit.msi
下载QT 5.15.5源代码 https://download.qt.io/archive/qt/5.15/5.15.5/single/qt-everywhere-opensource-src-5.15.5.zip
解压QT源代码 注:目录不要有中文且尽量短一些 不然目录太长 后面会报错.
将 qt-everywhere-opensource-src-5.15.5/gnuwin32/bin 目录添加到环境变量Path中
2:
验证环境 cmd中键入
python --version
perl --version
ruby --version
flex --version
3:
修改编译配置 \qtbase\mkspecs\common\msvc-desktop.conf 将以下两项MD改为MT 最后一项改为MTd
QMAKE_CFLAGS_RELEASE = QMAKE_CFLAGS_OPTIMIZE -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO +=QMAKE_CFLAGS_OPTIMIZE -Zi -MT
QMAKE_CFLAGS_DEBUG = -Zi -MTd
4:
//在VS2022 x64 Native Tools 命令行工具中依顺序执行
cd 进入源代码根目录
//-prefix 用于配置安装目录
configure -prefix "C:\Qt\5.15.5_MT" -static -release -nomake examples -nomake tests -opensource -confirm-license
//仅编译qtbase模块 就足以应付 大多数GUI工程了
nmake module-qtbase
cd qtbase
//安装到配置的目录
nmake install
5.配置 Qt Creator 很简单
6.配置 Qt Vs tools 也很简单
7.经测试 很完美.