2

我有一个包含大约 15 个项目的大型 Visual Studio 2012 解决方案。我真的很想为其中一些项目禁用调试符号生成;其余的应该允许调试。所有这些都与 Debug 配置有关。

我很难做到这一点。我的 pro 文件中唯一提到 Zi 是这样的:

# Get rid of debug information
QMAKE_CFLAGS_DEBUG -= -Zi
QMAKE_CXXFLAGS_DEBUG -= -Zi
QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -Zi

但是当我加载解决方案文件时,Property Pages-> C/C++-> All Options-> Debug Information Format,该Program Database (/Zi)选项仍然显示。我还删除了 mkspecs 和 qmake.conf 中对 Zi 的任何提及(即使上面的 -= 行应该已经删除了它)。

于是我打开了qmake源代码(qmake/generators/win32下的每个文件),发现好像没有办法关闭调试符号;只有没有 a-Zi才能阻止它出现。

如果我将项目设置为<inherit from parent or project defaults>手动,该Zi选项会再次出现。这让我相信它是被继承的……但从哪里来?!

我正在失去理智。请帮忙。


编辑1:

显然,继承的属性来自Microsoft.Cpp.* 属性表。按照该链接中的说明查找项目继承的属性表,您可以修改它们以摆脱-Zi标志。

拥有一面强制None. Debug Information Format有谁知道那可能是什么?


编辑2:

第三个想法:尝试将继承的属性表的默认位置更改为我可以控制的位置。

Windows 环境变量 $(UserRootDir) 指定继承的属性表的位置。据称MSBUILD允许您使用/property命令行参数更改此变量的值。不幸的是,我不知道如何让 qmake 接受这个论点。有没有办法为 qmake MAKEFILE_GENERATOR 构建器设置输入参数?

这个任务开始感觉像是一场野鹅追逐。如果 CMD 具有 sed 功能,我只需编写一个脚本来更改<DebugInformationFormat>vcxproj 文件的内部并完成。

4

1 回答 1

0

我在 2 个月前为此提交了QTBUG-32885,但尚未修复。

现在,您可以按照票证中的说明修补您的 qmake。

于 2013-09-24T13:39:04.103 回答