如何让MSBuild执行完整的Delphi项目构建,相当于dcc32 -b命令?

9

我怎样才能让MSBuild对Delphi项目进行完整构建,相当于dcc32 -b命令?

我有两个需要构建的项目,第一个项目使用了一些条件定义,并通过msbuild将它们传递给了dcc32。然而,一些公共单元似乎被卡在了第一组条件上,因此第二个项目构建不正确。

5个回答

11
我相信这应该是/t:rebuild,msbuild输出会列出“正在删除文件:...”以删除所有的dcu文件,然后编译项目。
我使用批处理文件调用msbuild来构建Delphi项目,适用于Delphi 2007和Delphi 2009(其中%BDS%的路径不同)。
set DCC_Quiet=true
set BDS=%ProgramFiles%\CodeGear\RAD Studio\5.0
set MSBuildBinPath=%WinDir%\Microsoft.NET\Framework\v2.0.50727

call %MSBuildBinPath%\msbuild /nologo /t:rebuild /p:config=Release %1 %2 %3 %4 %5

[注意,来自这个问题,对于发布“构建配置”,Delphi 2009是/p:config=Release,而Delphi 2007是/p:Configuration=Release]


1
Delphi 2006在通过命令行msbuild运行时会输出许多空白行,设置DCC_Quiet环境变量将向dcc32传递-Q参数(参见http://qc.embarcadero.com/wc/qcmain.aspx?d=56289)。但是在Delphi 2009中似乎没有任何作用。 - jasonpenny
您还可以从msbuild命令行设置DCC_Quiet:msbuild <ProjectName> -p:DCC_Quiet=true - Kenneth Cochran
@jasonpenny 我认为你说的是 Delphi 2007,而不是 Delphi 2006。 - dummzeuch

2

0

使用我的RAD Studio 2010 Professional,/t:rebuild未定义。我想

MSBuild.exe /t:Build /p:config=Release;DCC_BuildAllUnits=true

完成工作


0

我记得在D7中,当GUI与dcc32生成不同的构建时,存在类似的问题。请查看您的dcc32.cfg文件的位置和内容。它们实际上可以包含您需要的任意数量的条件语句。每行一个条件语句。


0
另一个选择是在第一次构建完成后,在开始下一次构建之前删除已编译单元的 DCU 文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接