【问题标题】:MSBuild VS2010 and /Zc:auto optionMSBuild VS2010 和 /Zc:auto 选项
【发布时间】:2011-05-30 17:42:23
【问题描述】:

我升级了我们的开发。从 VS 2008 到 VS 2010 的环境。 我们编译了 1000 多个 C++ 项目。全部来自命令行。 问题之一是我们的代码库中大量使用了“auto”一词。 默认情况下,VS 2010 不允许它,即使在 auto_close 等函数名称中也是如此。 使用 /Zc:auto- 选项可解决此问题。

我的问题是: 让 MSBuild 将 /Zc:auto 选项传递给 cl.exe 的正确方法是什么? 我试过:“/p:ClCompile_AdditionalOptions=Zc:auto-”但编译仍然失败。 如果我手动将 /Zc:auto- 选项添加到项目属性中 - 在配置属性/C/C++/CommandLine/AdditionalOptions 那么项目就编译好了。

我无法手动编辑数千个项目的问题。

我尝试使用以下命令行: msbuild "/t:Build" "/p:Configuration=Release" "/p:UseEnv=true" "/p:AdditionalOptions=Zc:auto-" "myproject.vcxproj"

【问题讨论】:

    标签: visual-studio-2010 command-line msbuild


    【解决方案1】:

    通过 MSBuild 提供 /Zc:auto- 选项意味着 IDE 不能用于编译任何有问题的项目,但也许这不会打扰您。如果现有项目不是全部使用属性表,可以使用添加到所有 VS2010 vcxproj 文件中的默认一个:

    %LOCALAPPDATA%\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props

    此属性表应包含在您的所有 vcxproj 项目中。要使用 IDE 添加选项,请打开您的项目之一,然后:

    查看 -> 其他窗口 -> 属性管理器 -> 调试 | Win32 -> Microsoft.Cpp.Win32.User -> 属性 -> 通用属性 -> C/C++ -> 命令行 -> 附加选项:/Zc:auto-

    然后保存并退出 IDE。该部分将被添加到该文件中:

    <ItemDefinitionGroup>
      <ClCompile>
        <AdditionalOptions>/Zc:auto- %(AdditionalOptions)</AdditionalOptions>
      </ClCompile>
    </ItemDefinitionGroup>
    

    并将适用于您的所有 C++ 项目。

    【讨论】:

    • 太棒了!这正是我一直在寻找的答案。非常感谢。
    猜你喜欢
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 2022-02-19
    • 1970-01-01
    相关资源
    最近更新 更多