如何使用从Embarcadero Makefile调用的MSBuild编译Delphi项目组

and*_*ndy 4 delphi msbuild makefile

我正在尝试从Virtual Treeview(VirtualTreesR.bpl和VirtualTreesD.bpl)编译这两个组件,我将这两个组件组合在一个名为VirtualTrees.groupproj的Delphi项目组中.它们应该使用MSBuild编译,但是这个调用是从(Embarcadero)Makefile完成的.Makefile中的相关部分如下所示:

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

不幸的是,这会导致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呢?

Uli*_*rdt 7

在我的批处理文件中,我使用rsvars.bat:

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

(你必须明显调整路径.)

  • 一般来说,Delphi开发人员不需要MAKE,因为MSBuild可以完成所需的一切. (2认同)