我有一个包含大约 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 文件的内部并完成。