qt之windows库编译

本文详细介绍了Qt源码的下载、编译及环境配置过程,包括使用MSVC作为编译工具、配置选项、编译源码、环境变量设置、绿色配置以及在VisualStudio中进行Qt开发的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、编译前工作

1、源码下载

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

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

2、安装编译工具

        打开解压后的源码目录,例如:E:/qt-everywhere-opensource-src-5.15.10,查看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官网安装并配置环境变量。

(3)Python

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

(4)Ruby

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

3、配置选项

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

  • x86
    在这里插入图片描述在这里插入图片描述
  • x64
    在这里插入图片描述在这里插入图片描述
            进入构建目录,例如:E:\qt-5.15.10-build,输入命令(命令选项说明):
  • x86
..\qt-everywhere-src-5.15.10\configure.bat -verbose -opensource -debug-and-release -shared -confirm-license -platform win32-msvc -make libs -opengl desktop -prefix D:\qt-5.15.10-windows-x86-msvc
  • x64
..\qt-everywhere-src-5.15.10\configure.bat -verbose -opensource -debug-and-release -shared -confirm-license -platform win32-msvc -make libs -opengl desktop -prefix D:\qt-5.15.10-windows-x64-msvc
(1)带QtWebEngine

需要增加选项-webengine-proprietary-codecs

二、编译源码

        配置成功后,内存最好大于4G以上,不然在某些情况下编译可能会不过,输入命令:nmake,即进入编译流程,等候大约三四个小时,编译成功后,输入命令:nmake install,即可把Qt库安装到目录:D:\qt-5.15.10-windows-x86-msvcD:\qt-5.15.10-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.10-windows-x64-msvc
QT_INSTALL_ARCHDATA:D:/qt-5.15.10-windows-x64-msvc
QT_INSTALL_DATA:D:/qt-5.15.10-windows-x64-msvc
QT_INSTALL_DOCS:D:/qt-5.15.10-windows-x64-msvc/doc
QT_INSTALL_HEADERS:D:/qt-5.15.10-windows-x64-msvc/include
QT_INSTALL_LIBS:D:/qt-5.15.10-windows-x64-msvc/lib
QT_INSTALL_LIBEXECS:D:/qt-5.15.10-windows-x64-msvc/bin
QT_INSTALL_BINS:D:/qt-5.15.10-windows-x64-msvc/bin
QT_INSTALL_TESTS:D:/qt-5.15.10-windows-x64-msvc/tests
QT_INSTALL_PLUGINS:D:/qt-5.15.10-windows-x64-msvc/plugins
QT_INSTALL_IMPORTS:D:/qt-5.15.10-windows-x64-msvc/imports
QT_INSTALL_QML:D:/qt-5.15.10-windows-x64-msvc/qml
QT_INSTALL_TRANSLATIONS:D:/qt-5.15.10-windows-x64-msvc/translations
QT_INSTALL_CONFIGURATION:
QT_INSTALL_EXAMPLES:D:/qt-5.15.10-windows-x64-msvc/examples
QT_INSTALL_DEMOS:D:/qt-5.15.10-windows-x64-msvc/examples
QT_HOST_PREFIX:D:/qt-5.15.10-windows-x64-msvc
QT_HOST_DATA:D:/qt-5.15.10-windows-x64-msvc
QT_HOST_BINS:D:/qt-5.15.10-windows-x64-msvc/bin
QT_HOST_LIBS:D:/qt-5.15.10-windows-x64-msvc/lib
QMAKE_SPEC:win32-msvc
QMAKE_XSPEC:win32-msvc
QMAKE_VERSION:3.1
QT_VERSION:5.15.10

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

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

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

[Paths]
Prefix = C:\Program Files\qt-5.15.10-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 常用设置

### 配置虚拟机连接外部无线网卡并运行 Fern WiFi Cracker 工具 要在虚拟机中通过无线网卡使用 Fern WiFi Cracker 进行无线攻击,需要完成以下几个方面的配置: #### 虚拟机网络适配器设置 在虚拟机软件(如 VMware 或 VirtualBox)中,需将主机上的物理无线网卡传递给虚拟机。此操作通常涉及 USB 设备直通功能或 PCI 直通技术。 对于大多数主流虚拟机平台而言,可以通过以下方式实现: - **VirtualBox**: 将无线网卡作为 USB 设备附加到虚拟机上。进入虚拟机的设置界面,在“USB”选项卡中启用 USB 控制器并将目标无线网卡分配至该虚拟机。 - **VMware**: 同样支持将 USB 无线网卡映射到虚拟机内部。具体方法是在虚拟机启动前,于硬件设置中的 USB 控制器部分绑定对应的设备[^2]。 #### 安装驱动程序和支持 一旦成功挂载了实际存在的 Wi-Fi 接口,则需要安装适用于 Linux 的相应驱动以及 AirCrack-ng 套件来激活监控模式(monitormode),这是执行任何类型的捕获活动所必需的前提条件之一。例如 Atheros AR9271 卡可能依赖 ath9k_htc 模块加载才能正常工作;而 Realtek RTL88xx 系列芯片组则往往需要用到 rtl8812au/rtl88x2bu 开源项目所提供的补丁版本固件文件才行[^3]。 #### 设置 Fern WiFi Cracker 当确认无线网卡已被识别并且能够切换成监听状态之后,就可以着手准备部署 Fern WiFi Cracker 图形化环境啦! 以下是几个关键步骤概述: 1. 更新包管理索引数据 `sudo apt update && sudo apt upgrade`; 2. 如果尚未存在的话,请先获取 git 版本控制系统以便克隆远程仓资源下来:`sudo apt install git`; 3. 下载最新发行版代码副本 `git clone https://github.com/savio-code/fern-wifi-cracker.git` 并跳转目录 cd fern-wifi-cracker/; 4. 执行脚本来初始化必要的依赖关系构建过程 ./install.sh; 5. 最终调用 python 应用入口点开始 GUI session —— python fern-wifi-cracker.py. ```bash # 此处展示命令序列用于引导用户顺利完成上述流程 sudo apt-get update sudo apt-get install -y build-essential autoconf libtool pkg-config \ zlib1g-dev libnl-3-dev libssl-dev iw ethtool usbutils macchanger tcpdump aircrack-ng tshark wireshark cd /opt/ git clone https://github.com/savio-code/fern-wifi-cracker.git chmod +x ./fern-wifi-cracker/install.sh ./fern-wifi-cracker/install.sh python ./fern-wifi-cracker/fern-wifi-cracker.py ``` 以上即为整个过程中涉及到的主要环节说明文档内容总结][^[^23].
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值