我有一个大型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。