qt之windows库编译

一、编译前工作

1、源码下载

进入官网https://download.qt.io下载和解压源码。

  • 下载qt-everywhere-opensource-src-5.15.9.zip源码文件(说明: 建议下载.zip的文件,不要下载.tar.gz,因为有些版本.tar.gz的文件解压后在windows平台编译时可能缺少头文件导致编译出错)
  • 将下载的qt-everywhere-opensource-src-5.15.9.zip源码解压到目录E:/qt-everywhere-src-5.15.9。
  • 创建空build文件夹:E:/qt-5.15.9-build。(注意:该文件夹在qt-everywhere-src-5.15.9文件夹外面。)(另外: 后面在configure.bat后会在build目录下自动生成一些源文件,进行nmake时会找不到而报错,此时就不要创建构建目录了,直接在源码目录进行configure.bat和nmake)。
2、安装编译工具

        打开解压后的源码目录,例如:E:/qt-everywhere-opensource-src-5.15.9,查看README文件,需要安装以下工具:

(1)MinGW 或者 MSVC 

        在Windows上,有两个预构建环境可供选择:

  •         MinGW
  •         Microsoft Visual Studio(MSVC)

        这两个环境互不兼容,无法混合,两种只能选择其一,它们的区别如下:

  •         当项目使用了MinGW编译时,若想用一个MSVC编译生成的库就会有问题,使用MinGW编译项目的时候,项目中所使用的库也必须是要MinGW编译的。
  •         如果只是开发Window平台的软件时,最好用Qt MSVC组合,这样可以使用大量的第三方库,还有很多的构建指令(毕竟Windows上MSVC才是王道)。

        因此,这里选择使用MSVC,可以进入官网https://visualstudio.microsoft.com/zh-hans/vs/下载Microsoft Visual Studio,这里选择:

 (2)Perl

        可以根据README文件中提供的链接下载安装ActivePerl,也可以自行上Perl官网安装并配置环境变量。(可参考博客:windows 10 下载安装 Perl ,用于执行 .pl 文件。 - 简书

(3)Python

        可以根据README文件中提供的链接下载安装ActivePython,也可以自行上Python官网安装并配置环境变量。

(4)RUBY

可以根据README文件中提供的链接下载安装RubyInstaller,也可以自行上Ruby官网安装并配置环境变量。 (参考: https://blog.csdn.net/Alive_tree/article/details/103043158

3、配置选项

        打开Visual Sutdio的开发人员命令窗口(注意: 否则如果在普通的命令窗口在配置时,会提示:'nmake' 不是内部或外部命令,也不是可运行的程序 或批处理文件

  • x86 配置窗口

  • x64配置窗口

在命令行中,通过cd命令,进入在第一步中创建的空build文件夹,例如:E:\qt-5.15.3-build,输入以下命令(命令选项说明): 

  • x86配置命令
..\qt-everywhere-src-5.15.9\configure.bat -verbose -opensource -debug-and-release -shared -confirm-license -platform win32-msvc -make libs -opengl desktop -prefix D:\qt-5.15.9-windows-x86-msvc

其中,最后一个命令,-prefix D:\qt-5.15.9-windows-x86-msvc,指定了 编译后得到的qt文件的输出目录。

  • x64配置命令
..\qt-everywhere-src-5.15.9\configure.bat -verbose -opensource -debug-and-release -shared -confirm-license -platform win32-msvc -make libs -opengl desktop -prefix D:\qt-5.15.9-windows-x64-msvc

 二、编译源码

        配置成功后,内存最好大于4G以上,不然在某些情况下编译可能会不过,输入命令:

nmake

即进入编译流程,等候大约三四个小时,编译成功后,输入命令:

nmake install

即可把Qt库安装到目录:D:\qt-5.15.9-windows-x86-msvc或D:\qt-5.15.9-windows-x64-msvc(这个目录是在上一步的配置命令中指定的)。

三、环境配置

在安装成功后,为了方便开发过程中对库的依赖,最好配置下环境变量。

QTDIR,例如:

QT_QPA_PLATFORM_PLUGIN_PATH,例如: 

QML2_IMPORT_PATH,在通过Visual Studio创建Qt Quick Application后运行时需要,否则会找不到依赖库,例如: 

QT_PLUGIN_PATH,配置Qt插件路径,例如: 

否则在某些场景下如果有使用到插件时会运行出错,比如,在QML中使用虚拟键盘时,创建了InputPanel控件,运行时会报错误: 

qrc:/QtQuick/VirtualKeyboard/content/InputPanel.qml:125 Type Keyboard unavailable
qrc:/QtQuick/VirtualKeyboard/content/components/Keyboard.qml:36 module "QtQuick.VirtualKeyboard.Plugins" is not installed

四、绿色配置 

Qt安装好后,不可以把它移动到其他目录,这是因为: Qt库在编译的时候将安装路径硬编码到库文件中。这个问题似乎不大好解决,可以通过命令查看到底由哪些路径:qmake -query,结果为:

QT_SYSROOT:
QT_INSTALL_PREFIX:D:/qt-5.15.9-windows-x64-msvc
QT_INSTALL_ARCHDATA:D:/qt-5.15.9-windows-x64-msvc
QT_INSTALL_DATA:D:/qt-5.15.9-windows-x64-msvc
QT_INSTALL_DOCS:D:/qt-5.15.9-windows-x64-msvc/doc
QT_INSTALL_HEADERS:D:/qt-5.15.9-windows-x64-msvc/include
QT_INSTALL_LIBS:D:/qt-5.15.9-windows-x64-msvc/lib
QT_INSTALL_LIBEXECS:D:/qt-5.15.9-windows-x64-msvc/bin
QT_INSTALL_BINS:D:/qt-5.15.9-windows-x64-msvc/bin
QT_INSTALL_TESTS:D:/qt-5.15.9-windows-x64-msvc/tests
QT_INSTALL_PLUGINS:D:/qt-5.15.9-windows-x64-msvc/plugins
QT_INSTALL_IMPORTS:D:/qt-5.15.9-windows-x64-msvc/imports
QT_INSTALL_QML:D:/qt-5.15.9-windows-x64-msvc/qml
QT_INSTALL_TRANSLATIONS:D:/qt-5.15.9-windows-x64-msvc/translations
QT_INSTALL_CONFIGURATION:
QT_INSTALL_EXAMPLES:D:/qt-5.15.9-windows-x64-msvc/examples
QT_INSTALL_DEMOS:D:/qt-5.15.9-windows-x64-msvc/examples
QT_HOST_PREFIX:D:/qt-5.15.9-windows-x64-msvc
QT_HOST_DATA:D:/qt-5.15.9-windows-x64-msvc
QT_HOST_BINS:D:/qt-5.15.9-windows-x64-msvc/bin
QT_HOST_LIBS:D:/qt-5.15.9-windows-x64-msvc/lib
QMAKE_SPEC:win32-msvc
QMAKE_XSPEC:win32-msvc
QMAKE_VERSION:3.1
QT_VERSION:5.15.9

幸运的是,在Qt4中引入了一个新的机制:qt.conf,这些路径可以被覆盖,该文件的大致写法如下:

[Paths]
Prefix = /some/path
...

如果将该qt.conf文件置于qmake(和其他Qt可执行文件)所在目录下,则Qt可执行文件的搜索路径将被qt.conf中指定的路径所覆盖。其中Prefix是关键字段,它指定了Qt的根目录,其他很多路径都是根据这个路径来指定,有一些路径会有一个默认值,比如:lib、bin,还有一些则没有,比如:examples、demos。下面为参考模板:

[Paths]
Prefix = C:\Program Files\qt-5.15.9-windows-x64-msvc
Translations = translations
Plugins = plugins
Imports = imports
Examples = examples
Demos = demos

然而还有个问题,就是库每次更换一次新的路径,就需要手动改qt.conf文件。可以编写脚本文件帮我们自动设置。

  • Windows版本:update_path.bat
echo off
setlocal enabledelayedexpansion

:: 该文件应该放在Qt根目录下, 比如qmake.exe文件在C:\Qt\bin,则该文件应放在C:\Qt

:: 获取当前目录, 并且替换'\'为'/'
SET QTDIR=%~dp0
SET QTDIR=%QTDIR:\=/%
SET QTCONF_FILE="%QTDIR%bin\qt.conf"
if exist %QTCONF_FILE% (
    DEL /q /f %QTCONF_FILE%
)

:: 写路径配置
echo [Paths]>> %QTCONF_FILE%
echo Prefix = %QTDIR%>> %QTCONF_FILE%

pause
  • Linux版本:update_path.sh
#!/bin/bash

# 该文件应该放在Qt根目录下, 比如qmake文件在/opt/qt5/bin,则该文件应放在/opt/qt5

QTDIR=$(cd $(dirname $0); pwd)
QTCONF_FILE="$QTDIR/bin/qt.conf"
if [ -f "$QTCONF_FILE" ]
then
	sudo rm -rf $QTCONF_FILE
fi

# 写路径配置
echo "[Paths]" >> $QTCONF_FILE
echo "Prefix = $QTDIR" >> $QTCONF_FILE

五、Visual Studio配置Qt开发

参考链接Visual Studio 常用设置

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值