我在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”脚本并访问其env。瓦尔? 是否有更好的方法来实现这一目标?
答案 0 :(得分:4)
不是直接调用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属性文件所需格式的事实。
答案 1 :(得分:2)
您可以创建一个运行您的ant脚本的小型批处理文件,并在该批处理文件中执行vsvars32.bat,然后再调用ant。
@echo off
setlocal
set TEMP_HOME=%~dp0
call "%VS90COMNTOOLS%\vsvars32.bat"
call "%ANT_HOME%\bin\ant.bat" %*
endlocal