使用qmake删除-Zi标志,适用于Visual Studio 2012



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

让这件事发生,我过得很糟糕。在我的专业文件中唯一提到的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下的每个文件),我发现似乎没有办法关闭调试符号;只有CCD_ 6的缺失才应该阻止它出现。

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

我疯了。请帮忙。


编辑1:

显然,继承的属性来自Microsoft.Cpp.*属性表。按照该链接中的说明查找项目继承的属性表,然后可以对其进行修改以去掉-Zi标志。

如果能为Debug Information Format设置一个强制None的标志,那就太好了。有人知道那可能是什么吗?


编辑2:

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

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

这项任务开始让人感觉像是一场徒劳的追逐。如果CMD有sed能力,我只需要写一个脚本来更改vcxproj文件中的<DebugInformationFormat>就可以了。

我在两个月前提交了QTBUG-32885,但它还没有修复。

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

最新更新