我正在尝试使用msbuild构建Visual Studio解决方案(C ++)
msbuild.exe mysolution.sln /p:platform="ARM" /p:configuration="Release"
我收到此错误
error : all paths through this function will call itself [-Werror,-Winfinite-recursion]
我只是希望能够从命令行关闭-Werror,而不是在项目属性>中关闭它。配置属性> C / C ++>将警告视为错误
谢谢!
编辑1。 我还想设置其他项目属性,这些属性无法在代码中修复,例如配置属性>一般>平台工具集和配置属性>一般>使用STL 。 FWIW,我可以从上面的命令行中看到ARM平台。
答案 0 :(得分:0)
根据stijn提供的this post,我们无法直接通过MSBuild命令行更改“TreatWarningAsError”的值。因为“TreatWarningAsError”是项目文件中的ClCompile而不是PropertyGroup。 您可以添加目标调用MSBuild,以通过MSBuild命令行将外部参数传递到项目文件中:
首先,在项目文件中更改“TreatWarningAsError”的固定值:
<ClCompile>
...
<TreatWarningAsError>$(TWAESettings)</TreatWarningAsError>
</ClCompile>
其次,将目标添加到项目文件中:
<Target Name="TestBuild" Returns="@(ManagedTargetPath)">
<MSBuild Projects="YourProjectName.vcxproj" Targets="NormalBuild" Properties="TWAESettings=true"/>
</Target>
第三,使用MSBuild命令行,其属性为true或false:
msbuild /p:TWAESettings=false Or msbuild /p:TWAESettings=true
<强>更新强>
配置属性&gt;一般&gt;平台工具集和配置属性&gt;一般&gt;使用STL
您可以直接通过MSBuild命令行更改Platform Toolset:
msbuild /p:PlatformToolset=v140_xp
但我找不到“使用STL”,而只是“使用ATL”。如果“使用STL”是项目文件中的PropertyGroup,您也可以直接通过MSBuild命令行进行更改。