2011-04-12 51 views
4

我想從Virtual Treeview(VirtualTreesR.bpl和VirtualTreesD.bpl)中編譯這兩個組件,這些組件在一個名爲VirtualTrees.groupproj的Delphi項目組中合併。它們應該使用MSBuild編譯,但是這個調用是從(Embarcadero)Makefile完成的。 Makefile中的相關部分看起來像:如何編譯一個使用MSBuild從Embarcadero Makefile調用的Delphi項目組

msbuild.exe /nologo /v:m /t:build /p:Config=Release "$(VTVDIR)\Packages\Delphi 2010\VirtualTrees.groupproj" 

不幸的是這會導致MSB4040,因爲環境變量BDS沒有在cmd.exe的設置,但它是在Makefile。我在調用msbuild之前嘗試了SET BDS = $(BDS),但無濟於事。我也嘗試將BDS設置爲屬性(/ p:BDS =($ BDS); Config = Release),這導致了另一個錯誤(某人喜歡:在%BDS%\ bin \ dcc32.exe找不到編譯器)。

這個來自Makefile的調用是在CI服務器上構建產品的準備工作的一部分,我不能保證BDS變量在那裏設置。那麼我怎樣才能將我在Makefile中的BDS變量提供給msbuild來接受呢?

回答

6

在我的批處理文件,我用rsvars.bat:

call "C:\Program Files (x86)\CodeGear\RAD Studio\5.0\bin\rsvars.bat" 
MSBuild SomeProject.dproj ... 

(你得明顯調整路徑。)

+0

謝謝。我的問題是:我有一個Makefile,而不是批處理文件。 - andy – andy 2011-04-12 09:51:04

+0

在調用make之前不能調用rsvars.bat嗎? – 2011-04-12 09:53:43

+0

我嘗試了幾件事情:如果我把它放在一個小批量中,先調用rsvars,然後使用make調用Makefile。這是行不通的。如果我在調用Msbuild.exe之前在Makefile中調用rsvars,它不起作用。如果我在命令行上調用rsvars,並在命令行上調用msbuild,它就會起作用。長話短說:它手動工作,但不是從Makefile – andy 2011-04-12 10:57:16

相關問題