2

我在 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”脚本并访问其环境。变量?有没有更好的方法来实现这一目标?

4

2 回答 2

5

与其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 属性文件所需的格式这一事实。

于 2009-11-23T22:19:21.573 回答
3

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

@echo off

setlocal

set TEMP_HOME=%~dp0

call "%VS90COMNTOOLS%\vsvars32.bat"

call "%ANT_HOME%\bin\ant.bat" %*

endlocal
于 2009-11-23T20:12:36.027 回答