如何使用正确分发的发行版 pdb 文件构建 Qt5

Posted

技术标签:

【中文标题】如何使用正确分发的发行版 pdb 文件构建 Qt5【英文标题】:HowTo build Qt5 with correctly distributed release pdb files 【发布时间】:2015-03-27 11:19:47 【问题描述】:

我想在 debugrelease 模式下从带有 PDB 文件的源代码构建 Qt5,但我遇到了两个问题:

    没有生成发布 PDB 文件(here 是解决方案),

    qt 构建系统没有像 nmake.exe install 之后的调试版本那样将发布 PDB 文件部署到给定的 prefix 构建文件夹。

示例如下:

> configure -confirm-license -debug-and-release -opensource -shared -platform win32-msvc2008 -prefix x86 -mp -no-opengl -nomake examples
> nmake.exe
> nmake.exe install

构建完成后,我有 qtbase\bin\x86\x86\bin 文件夹,其中包含 DLLs、LIBs 和只有 debug PDB 文件,除了 release PDB 文件。 Qt 构建脚本不会像调试 PDB 文件那样复制发行版 PDB 文件。发布创建并位于模块中的 PDB 文件。

有人知道如何解决这个问题吗?

PS:作为我自己的解决方案,我想从每个模块文件夹中复制所有 *.pdb 文件,但我认为这种情况是最糟糕的,首先我会尝试找到更多human 解决方案。

PSS:Qt4 没有这样的行为,我们也没有问题。

P3S:这里是 Qt similar bug。

谢谢, 最好的问候!


环境:

版本:Qt 5.4.1

系统:Win 8.1

工具集:MSVS2008 (vc9)


有用的链接:

    qmake Variable Reference How to create .pdb files also for Release version of Qt library SO

【问题讨论】:

【参考方案1】:

-force-debug-info该死的选项解决了...

【讨论】:

【参考方案2】:

Qt.io - release with pdb

追加(不在文件开头插入):

QMAKE_CFLAGS_RELEASE    = -O2 -MD -zi
QMAKE_LFLAGS_RELEASE    = /INCREMENTAL:NO /DEBUG

进入qmake.conf,然后你会得到release pdbs

【讨论】:

以上是关于如何使用正确分发的发行版 pdb 文件构建 Qt5的主要内容,如果未能解决你的问题,请参考以下文章

如何调试发行版构建

C++/Qt 发行版中的库链接

在哪里可以找到 Qt 的 dll 的 pdb 文件?

构建电子 linux 发行版:找到了 SUID 沙箱助手二进制文件,但未正确配置

如何更改年龄不匹配的 PDB 以正确匹配?

针对自定义构建的 tcl85.lib 的链接器错误,针对 ActiveState 发行版的 tcl85.lib