Qt源码编译和调试

因为有时候qt版本很老,目前已知的一些镜像或者相关网站下载不到qt的pdb文件,导致无法在调试中断点到qt源码中,这时候可以考虑编译qt源码,这里记录一下相关操作

环境依赖

笔者这里的qt版本是5.9.7
找到C:\Qt\Qt5.9.7\5.9.7\Src目录下的readme,发现基于windows下的要求
在这里插入图片描述
需要安装perl,python和ruby
版本要求如图,这里找到相关下载官网直接安装最新版本
这里python我安装的3.12版本,直接按照引导直接安装即可,记得勾选环境变量选项,或者安装完毕后自己添加到环境变量也可(不要安装!不要安装!不要安装!PS:如果你和我一样上面写的是2.7的话,qt6啥的无所谓了,后续有报错情况是因为安装了python3,因为qt版本太老了,经典print写法python2和3不一样导致的问题)
在这里插入图片描述
ruby安装的是3.34版本,安装步骤按照引导进行,添加环境变量
在这里插入图片描述
perl这里安装的是5.36版本,安装按照引导即可,同步环境变量
在这里插入图片描述
都安装完毕后,环境依赖基本解决了(当然基础的vs2022和对应qt安装,可以看前面的环境安装记录,qt安装记得勾选source,安装源码)

编译构建

安装好后,这里涉及到需要编译的是静态库还是动态库,这里两个都记录下

静态库编译

打开qt对应的源码目录,找到“\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修改成-MT,如截图所示

下一步打开对应的vs命令框,这里编译x64版本,所以选择的对应命令框
在这里插入图片描述
输入cd /d C:\Qt\Qt5.9.7\5.9.7\Src 进入到对应的源码目录

然后输入configure -confirm-license -opensource -platform -debug-and-release -static -static-runtime -prefix “C:\Qt5.9.7” -no-compile-examples -force-debug-info
这个可以对应下方表格进行修改对应命令行,这其中的-static就是静态库编译
在这里插入图片描述

动态库编译

如果是动态库编译就不要修改原文件了,保持原样,这里涉及MT和MD的区别,正好碰到了,记录一下(客官儿主页儿请)!

同样按照上面-static关键字的解释,也不需要加上这个了,默认是动态的,

输入命令行
configure -confirm-license -opensource -platform win32-msvc2017 -mp -debug-and-release -prefix “C:\Qt” -no-compile-examples -force-debug-info
然后就是编译了,
然后根据提示,我这里提示是输入nmake,输入后回车就开始编译了

在这里插入图片描述

难绷,编一半吃饭去了,电脑自动更新了(啊!!!)
报错了,print错误,之前安装的是python3,qt版本太老了,换成python2再试一次

在这里插入图片描述

又报错了,这个错误是有可能权限不够导致的,换成管理员权限再试一次!
在这里插入图片描述
这里又又报错了。。难绷,因为没有ninja,但是查资料说是vs2022是自带ninja的,自己安装了设置了环境变量也不起作用,尝试安装re2c,但是没安装成功,后续再琢磨,琢磨好了再记录一下,这里可耻地润了;
具体润法,因为发现是编译qtwebengine这个库出的问题,需要ninja,因此在命令行末尾加上**-skip qtwebengine**,然后就可以跳过这个库了,最后结果就是编完通过了(逃避虽然可耻,这部剧都出多少年了,也成老梗了)

安装

接着是运行命令行 nmake install就可以安装到你之前设置的目录中了

总结一下,整体过程断断续续搞了两天,期间碰到各种意外情况,所实话,有点折磨,记录一下,希望可以坚持记录,记录就和写日记一样,重要的不是解决方法(也很重要!),是回忆的锚点,让人看到这篇文章能想起当时处理问题的场景。

@echo off
setlocal

rem ======== 修改这些路径为你自己的环境 ========
set QT_SRC_DIR=C:\dev\qt5.15.16\qtbase
set QT_INSTALL_DIR=C:\Qt\5.15.16-ssl3-msvc
set OPENSSL_INC=C:\OpenSSL3\include
set OPENSSL_LIB=C:\OpenSSL3\lib
rem ===============================================

cd /d %QT_SRC_DIR%

echo.
echo [1/3] Running configure...
configure ^
 -prefix %QT_INSTALL_DIR% ^
 -opensource -confirm-license ^
 -release ^
 -platform win32-msvc ^
 -openssl-linked ^
 -I %OPENSSL_INC% ^
 -L %OPENSSL_LIB% ^
 -nomake tests -nomake examples

if errorlevel 1 (
    echo Configure failed.
    exit /b 1
)

echo.
echo [2/3] Building Qt...
nmake
if errorlevel 1 (
    echo Build failed.
    exit /b 1
)

echo.
echo [3/3] Installing Qt...
nmake install
if errorlevel 1 (
    echo Install failed.
    exit /b 1
)

echo.
echo Qt 5.15.16 built and installed to: %QT_INSTALL_DIR%
endlocal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值