早上好, 我正在嘗試使用VS2008編譯器(msbuild)編譯Ant的C++項目。 這是我的操作順序:在lanching之後從ant執行msbuild vcvarsall.bat
<target name="setEnv" > <exec dir="." executable="cmd"> <arg line="/c setEnv.bat" /> </exec> </target>
其中setEnv.bat設置環境變量的MSBuild使用
@echo off REM Load Visual Studio's build tools call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x64
,並在其後執行該
<target name="msbuildSln" depends="setEnv"> <exec executable="msbuild"> <arg value="${myproj.sln}" /> <arg value="/p:Configuration=Release" /> <arg value="/p:Platform=x64" /> </exec> </target>
問題是,當我加州LL從目標的MSBuild msbuildSln的環境變量沒有在實際上設置我有這樣的信息:
BUILD FAILED C:\Users\workspace\MyProj\mybuild.xml:82: Execute failed: java.io.IOException: Cannot run program "msbuild": CreateProcess error=2, The system cannot find the file specified
我認爲這是CMD範圍的問題,因爲如果我啓動它裏面setEnv.bat運行。 我試過不同的解決方案:
1)從它的文件夾直接調用msbuild並運行我的目標
2)設置env。
call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x64 %* ant -f mybuild.xml msbuildSln
設置類似項目默認=「SETENV」,並在msbuildSln目標去除SETENV的dependece:vcvarsall.bat全球
3)做我的Ant腳本修改噸setEnv.bat兩個人通話的變量。
我採用了最後的解決方案,但我不知道它是否會影響性能。但最重要的一點是有一種方法來設置和使用vcvarsall.bat和msbuild在一起,因爲我必須做很多步驟(如從svn結帳,建立的解決方案等),我想用螞蟻沒有把所有在.bat文件中。 謝謝。
開始螞蟻從Visual Studio命令窗口,即一個內你已經調用了vcvarsall.bat? – stijn 2014-08-27 10:47:35
@stijin已經嘗試使用.bat中的cl.exe進行設置,但我有相同的結果;它設置了變量,但當我回到螞蟻中時我不能使用它們。我也嘗試執行如下所示的:' \t \t \t \t '但我不能執行其他程序,如標籤msbuild。我想我需要一些結構來做嵌套的,它不存在於Ant中。 –
albin0
2014-08-27 14:46:46