【问题标题】:How do I export environment variables from the Ant 'exec' task?如何从 Ant 'exec' 任务中导出环境变量?
【发布时间】:2009-11-23 14:57:45
【问题描述】:

我在WinXp下使用Ant构建MSVisual c++项目。

要访问独立于计算机的“devenv.com”,我想使用 vsvars32.bat 脚本。 不幸的是,环境变量似乎只在“exec”范围内定义。

例子:

<exec executable='"${env.VS90COMNTOOLS}vsvars32.bat/>
<echo message="${DevEnvDir}" />
<echo message="${env.DevEnvDir}" />
<property environment="env2"/>
<echo message="${env2.DevEnvDir}" />

我从来没有得到预期的结果。

如何使用“vsvars32.bat”脚本并访问其环境。变量? 有没有更好的方法来实现这一点?

【问题讨论】:

    标签: ant environment-variables exec devenv


    【解决方案1】:

    不要直接调用vsvars32.bat,而是从使用set 将环境设置写入文件的小帮助脚本调用它。

    帮助脚本vsenvwrap.bat:

    @echo off
    
    call "%VS90COMNTOOLS%\vsvars32.bat"
    
    set > vsenv.txt
    

    在你的build.xml调用帮助脚本,然后读取设置文件vsenv.bat

    <exec executable="vsenvwrap.bat" />
    <property file="vsenv.txt" prefix="env2" />
    

    然后您可以在构建过程中删除 vsenv.txt 文件,或者在您的干净目标中删除。

    这利用了环境变量列表大多符合 java 属性文件所要求的格式这一事实。

    【讨论】:

      【解决方案2】:

      您可以创建一个运行 ant 脚本的小批处理文件,并在该批处理文件中执行 vsvars32.bat,然后再调用 ant。

      @echo off
      
      setlocal
      
      set TEMP_HOME=%~dp0
      
      call "%VS90COMNTOOLS%\vsvars32.bat"
      
      call "%ANT_HOME%\bin\ant.bat" %*
      
      endlocal
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-26
        • 2011-12-21
        • 2016-03-01
        相关资源
        最近更新 更多