【问题标题】:How do I write a build batch script that runs vcvars32.bat, and then continues with the build?如何编写运行 vcvars32.bat 的构建批处理脚本,然后继续构建?
【发布时间】:2009-04-17 23:16:53
【问题描述】:

我想编写一个简单的批处理脚本,使用vcvars32.bat 加载Visual Studio 构建环境,然后使用vcbuild 继续构建。但是,我的脚本不会在调用vcvars32.bat 之后执行。我得到的最后一个输出是:

Setting environment for using Microsoft Visual Studio 2008 x86 tools.

如您所见,我使用的是 Visual Studio 2008。这是我最简单的批处理脚本:

@echo off
"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"
vcbuild

【问题讨论】:

    标签: windows visual-studio vcbuild


    【解决方案1】:

    您必须在批处理脚本中使用call,否则vcvars32.bat 的终止将终止您自己的批处理脚本。因此,您的脚本应该是:

    @echo off
    call "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"
    vcbuild
    

    【讨论】:

    • 即使在 vcvars32.bat 中没有退出语句也会发生这种情况。在没有“调用”的情况下调用批处理文件会运行批处理文件并在它到达第二个批处理文件的末尾时退出。 (另请参阅 Raymond Chen 最近关于此主题的博客文章:blogs.msdn.com/oldnewthing/archive/2009/04/16/9551818.aspx
    • 您应该使用 %VCINSTALLDIR% 代替程序文件参考,这将使其可移植到其他构建机器或如果您碰巧在其他地方安装 VS。
    【解决方案2】:

    您还需要检查该脚本是否尚未运行,否则如果您在同一个控制台中一遍又一遍地调用您的脚本,您将开始耗尽内存。

    IF '%VSINSTALLDIR%' NOT EQU '' THEN EXIT 0
    

    【讨论】:

      【解决方案3】:

      确切的程序文件路径取决于您使用的是 32 位还是 64 位操作系统以及 Visual Studio 的安装位置。使用 Visual Studio 在安装时设置的 VS100COMNTOOLS 环境变量,一般可以解决这个问题。

      call "%VS100COMNTOOLS%\..\..\VC\bin\vcvars32.bat"
      ...
      

      请注意,每个版本的 Visual Studio 都有一个基于其底层版本号的特定环境变量。

      Visual Studio 2005    VS80COMNTOOLS
      Visual Studio 2008    VS90COMNTOOLS
      Visual Studio 2010    VS100COMNTOOLS
      Visual Studio 2012    VS110COMNTOOLS
      Visual Studio 2013    VS120COMNTOOLS
      Visual Studio 2014    VS130COMNTOOLS
      Visual Studio 2015    VS140COMNTOOLS
      Visual Studio 2016    VS150COMNTOOLS
      Visual Studio 2017    VS160COMNTOOLS
      

      你明白了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-08
        • 2023-03-10
        • 2017-08-09
        • 1970-01-01
        • 2015-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多