前置要求
已经静态编译好的 OpenSSL 库,存放在 C:\Program Files (x86)\OpenSSL 下:
1 2 3 4 5 6 7 8 9 10
| ├─bin ├─html │ ├─man1 │ ├─man3 │ ├─man5 │ └─man7 ├─include │ └─openssl └─lib └─engines-1_1
|
Qt 5.15.2 镜像:
https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.15/5.15.2/single/qt-everywhere-src-5.15.2.zip
执行脚本编译
进入 PowerShell
输入 Set-ExecutionPolicy Unrestricted
.\msvc2019-build5.15.2-static.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
$version_base = "5.15" $version = "5.15.2"
$qt_archive_file = "D:\QT\qt\5.15.2\qt-everywhere-src-5.15.2.zip" $qt_src_base_folder = $pwd.Path + "\qt-everywhere-src-" + $version
$tools_folder = $pwd.Path + "\tools\" $type = "static" $prefix_base_folder = "qt-" + $version + "-" + $type + "-msvc2019-x86" $prefix_folder = $pwd.Path + "\" + $prefix_base_folder $build_folder = $pwd.Path + "\bld"
$openssl_base_folder = "C:\Program Files (x86)\OpenSSL" $openssl_include_folder = $openssl_base_folder + "\include" $openssl_libs_folder = $openssl_base_folder + "\lib" $openssl_bin_folder = $openssl_base_folder + "\bin"
& "$tools_folder\7za.exe" x $qt_archive_file
mkdir $build_folder cd $build_folder
& "$qt_src_base_folder\configure.bat" -debug-and-release -opensource -confirm-license -platform win32-msvc -opengl desktop -no-iconv -no-dbus -no-icu -no-fontconfig -no-freetype -qt-harfbuzz -qt-doubleconversion -nomake examples -nomake tests -no-feature-d3d12 -skip qt3d -skip qtactiveqt -skip qtcanvas3d -skip qtdatavis3d -skip qtdoc -skip qtgamepad -skip qtgraphicaleffects -skip qtlocation -skip qtpurchasing -skip qtscxml -skip qtsensors -skip qtspeech -skip qtwebview -skip qtscript -skip qtwebengine -mp -optimize-size -D "JAS_DLL=0" -static -feature-relocatable -ltcg -prefix $prefix_folder -openssl-linked -I $openssl_include_folder -L $openssl_libs_folder OPENSSL_LIBS="-lUser32 -lAdvapi32 -lGdi32 -lWS2_32 -lCRYPT32 -llibcrypto -llibssl"
nmake nmake install
cp "$openssl_libs_folder\*" "$prefix_folder\lib\" -Recurse cp "$openssl_include_folder\openssl" "$prefix_folder\include\" -Recurse
$openssl_libs_folder_esc = $openssl_libs_folder -replace '\\','\\'
gci -r -include "*.prl" $prefix_folder | foreach-object { $a = $_.fullname; (get-content $a).Replace($openssl_libs_folder_esc, '$$$$[QT_INSTALL_LIBS]\\') | set-content $a }
& "$tools_folder\7za.exe" a -t7z "${prefix_base_folder}.7z" "$prefix_folder" -mmt -mx9
|
上述编译过程可能需要 3 至 4 小时不等,最终输出文件夹 qt-5.15.2-static-msvc2019-x86 即为编译好的源码,导入至 Qt 中使用即可。
参考