【问题标题】:How to reset environment after running vcvars32.bat运行 vcvars32.bat 后如何重置环境
【发布时间】:2013-02-19 23:14:05
【问题描述】:

我正在编写一个批处理文件来使用 Visual C++ 运行一些构建。我想“撤消”脚本末尾的 vsvars32.bat/vcvarsXX.bat 更改,以便在脚本运行之前保持环境不变。

示例 1 - 使用 vsvars32.bat

call %VS100COMNTOOLS%vsvars32.bat
devenv myProject.sln /Build "Debug|Win32"
:: Now undo vsvars32.bat

示例 2 - 使用 vcvars32.bat 和 vcvars64.bat

<path to VC bin>vcvars32.bat
:: cmd line build calls for 32 bit application
:: Now undo vcvars32.bat

<path to VC bin>amd64\vcvars64.bat
:: cmd line build calls for 64 bit application
:: Now undo vcvars64.bat

有什么建议吗?

【问题讨论】:

    标签: visual-c++ command-line batch-file


    【解决方案1】:

    解决方案很简单 - SETLOCAL 加上 ENDLOCAL。输入HELP SETLOCALHELP ENDLOCAL 以获取更多使用信息。

    示例 1:

    setlocal
    call %VS100COMNTOOLS%vsvars32.bat
    devenv myProject.sln /Build "Debug|Win32"
    endlocal
    

    示例 2:

    setlocal
    <path to VC bin>vcvars32.bat
    :: cmd line build calls for 32 bit application
    endlocal
    
    setlocal    
    <path to VC bin>amd64\vcvars64.bat
    :: cmd line build calls for 64 bit application
    endlocal
    

    【讨论】:

      【解决方案2】:

      如果您的 build.bat 将被以下方式调用会更简单:

      cmd.exe /c build.bat
      

      这将:

      1. 使用当前环境的副本创建子进程。
      2. 修改此环境。
      3. 在修改后的子环境中运行构建。
      4. 在进程退出时丢弃子环境。

      因此,当前环境不会发生任何变化,也不需要清理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多