Visual Studio 2019编译QT5.12.0 x64

kyaa111 2年前 ⋅ 727 阅读

下载源码

https://download.qt.io/archive/qt/5.12/5.12.0/single/

编译工具

Perl

https://strawberryperl.com/download/5.26.3.1/strawberry-perl-5.26.3.1-64bit-portable.zip

Ruby

https://github.com/oneclick/rubyinstaller2/releases/download/rubyinstaller-2.5.3-1/rubyinstaller-2.5.3-1-x64.7z

Python

以上的都要加入环境变量内

OpenSSL (可选)

openssl的编译看这个 https://blog.22xcode.com/post/218

如果链接 openssl, configure如下 (x86/x64和debug/release要相互匹配)

(静态)

configure.bat 
-static -static-runtime  
-prefix "D:/qt" 
-confirm-license -opensource 
-release 
-static 
-ssl 
OPENSSL_LIBS="-lssleay32 -llibeay32 -lUser32 -lAdvapi32 -lGdi32"  -- 动态可以不用这个
-openssl-linked 
-ID:\openssl\include  -- 头文件目录
-LD:\openssl\lib  -- 库目录 -- 动态可以不用这个
-platform win32-msvc 
-nomake examples -nomake tests 
-plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg 
-opengl desktop 
-mp

5.12.0的qt, 匹配的是openssl-1.0.2u的openssl

注意动态/静态链接, x86和x64都要匹配上

编译

MDd

qt-source-5.12.0\qtbase\mkspecs\common\msvc-desktop.conf

QMAKE_CFLAGS_RELEASE    = $$QMAKE_CFLAGS_OPTIMIZE -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += $$QMAKE_CFLAGS_OPTIMIZE -Zi -MD
QMAKE_CFLAGS_DEBUG      = -Zi -MDd

MD 表示运行时是多线程动态库

MDd 的 d 则是带上了debug信息的库

MT多线程静态库

平常开发可以用MDd, 发布出去则需要使用MD/MT

MD 要带上QT的一堆dll, 发布出去还需要配合安装包之类的

MT 则是一个文件, 适合小工具发布, 据说按qt的开源许可, 如果是MT, 则需要公开源码

编译64位的需要用到x64 Native Tools Command Prompt for VS 2019, 安装visual studio会自动带上, 以下命令行操作都在这个工具内进行

Configure

源码路径下

configure.bat -static -prefix "D:\qt" -confirm-license -opensource -debug-and-release -platform win32-msvc -nomake examples -nomake tests -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -mp

(静态编译还要修改msvc-desktop.conf, MD改为MT)

configure.bat 
-static //静态编译
-prefix "D:/qt" //指明安装的目录
-confirm-license -opensource  //指明是开源版本的qt
-debug-and-release //指明需要debug版和release版,可以单独选择release版
-platform win32-msvc  //指明使用msvc编译
-nomake examples -nomake tests  //不编译样例
-plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg //可选插件
-opengl desktop 
-mp //多核编译

如果选了OpenSSL链接

则输出会有

  OpenSSL ................................ yes
    Qt directly linked to OpenSSL ........ yes

nmake && nmake install

QtCreator

qt自带的ide

可以直接下载安装 https://iso.mirrors.ustc.edu.cn/qtproject/archive/qtcreator/7.0/7.0.2/qt-creator-opensource-windows-x86_64-7.0.2.exe

Visual Studio

Qt Visual Studio Tools

自行在vs拓展内下载

设置 .ui 文件用QtCreator打开

如果双击.ui文件打开QtCreator再关闭后报错, 则需要重新设置一个打开方式

附几个命令

debug-dynamic-32

configure.bat -prefix "D:/debug-dynamic-32" -confirm-license -opensource -debug -ssl -openssl -ID:\openssl-debug-32\include -platform win32-msvc  -nomake examples -nomake tests  -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg  -opengl desktop  -mp

release-dynamic-32

configure.bat -prefix "D:\release-dynamic-32" -confirm-license -opensource -release -ssl -openssl -ID:\openssl-release-dynamic-32\include -platform win32-msvc  -nomake examples -nomake tests  -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg  -opengl desktop  -mp

release-static-64

configure.bat -prefix "D:\release-static-64" -confirm-license -opensource -static -release -ssl -openssl OPENSSL_LIBS="-lssleay32 -llibeay32 -lUser32 -lAdvapi32 -lGdi32" -openssl-linked  -ID:\openssl-release-static-64\include -LD:\openssl-release-static-64\lib -platform win32-msvc  -nomake examples -nomake tests  -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg  -opengl desktop -mp