Visual Studio 2015编译Qt5.8.0源码踩坑记录

本文讲述了在使用Qt5.8.0开发Windows桌面程序时,作者遇到的qtconfig.pri文件丢失、libatomic找不到等问题,通过尝试qmake编译、VS工具、perl.exe配置等步骤,最终解决了这些问题并生成了可调试的编译版本。
摘要由CSDN通过智能技术生成

事情大概是这样的:公司软件采用的5.8.0版本开发windows桌面程序,为了方便定位Qt的崩溃问题,获取实现细节,故而需要源码编译。

需要声明的是官网提供的方案是通过jom工具调命令行方式编译,本人没试过,主要想着通过qmake将pro转成vcproj方式编译,毕竟用vs比较习惯了。

前期准备:

(1)官网下载带源码的安装包,大家可以自行搜索qt-opensource-windows-x86-msvc2015_64-5.8.0.exe,包的大小1.03G

(2)双击安装源码到指定目录,假设根目录为${Root},细节略

(3)借助vs安装的Qt-VS-Tools插件打开${Root}/src/qtbase/src/src.pro,注意不要打开Root/src/qtbase/src/qtbase.pro(会引发错误)。不出意外,打开src.pro会报错如下:

qtconfig.pri等三个文件找不到,以及Project ERROR:Could not find feature libatomic.

问题解决:

(1)针对qtconfig.pri等三个文件找不到的问题,我将之前编过的qt5.9.8中对应的几个文件直接拷贝过来,故而最终问题只剩下could not find feature libatomic。

(2)通过everthing按名称搜引用libatomic的地方,找到了若干文件,也没看出些眉目。

于是剑走偏锋,既然是qmake爆出的错,那就直接编译qmake源码跟进去调试下为嘛提示找不到libatomic,于是又掉进了另一个坑。

(1)同样通过Qt-VS-Tools工具打开qmake下的qmake.pro,转成vcxproj文件。工程文件倒是生成成功了,但是编译的时候居然还是提示libatomic相关的内容找不到,于是暂时放弃

(2)通过qtcreator打开qmake.pro方式编译,工程打开倒是挺顺利,但是编译的时候会遇到如下几个错误,每个都会让你想要放弃:

  1. qstring_compat.cpp的错误,这里采用的方式是cpp内容全部清空
  2. QT_VERSION_STR等相关的定义找不到,添加qconfig.h即可
  3. 链接时提示QDebug、QRingBuffer相关的未解析错误,这个需要修改pri文件,补充遗漏的cpp即可
  4. 提示shgetknownfolderpath等win32相关api无法解析,修改qmake.pri,补充shell32.lib即可

至此qmake.exe成功生成,接下来就开始调试为嘛提示libatomic的问题

-----------------------------------------------------分割线---------------------------------------------------------------

  1. 关于qtconfig.pri等几个文件找不到的原因,终于找到了,需要提前将perl.exe路径加入Path中,接着利用vs的命令行工具调configure.bat,这几个文件会自动生成,包括libatomic找到的问题也解决了,不过暴露出了一个新问题:Library "pcre" is not defined.
  2. 采用vs命令行工具成功编译通过,大概步骤如下:

          ./configure.bat -force-debug-info

          nmake

其中force-debug-info主要是为了编译带调试信息的release版本

最终结果如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值