如何编译 Delphi 项目组中的多个项目,该项目组包含在 Delphi IDE 中的几个项目?

4
我正在使用 Delphi XE。自从 Delphi 2007 起,它支持项目组 (.groupproj) ,我们可以将项目添加到其中。
我们可以在“生成配置”中为项目定义各种构建配置,例如:调试和发布构建。
自从 Delphi 2010 起,可以使用运行时变量 $(Config) 来设置输出目录,例如: .\$(Config) 。
在此示例中,$(Config) 分别翻译为“Debug”和“Release”,用于调试构建和发布构建。
当激活“构建配置”的“调试构建”时,输出文件将存储在相对于当前目录的“.\Debug”文件夹中。
这是一个不错的功能,因此我们可以将输出文件存储在项目的构建配置中定义的各个文件夹中。
此外,使用“构建配置”上下文菜单 (鼠标右键弹出菜单) 中的“构建”菜单项可对所有位于其下的构建执行编译。
不幸的是,我的项目组中有超过 200 个项目。每个项目都定义了调试和发布构建。我找不到任何一种方法来触发一次性编译项目组中所有 200 个项目的调试和发布构建操作。
迄今为止,我所知道的唯一解决方案是使用“视图 | 配置管理器”在每次构建之前更改活动配置。然而,这会将所有项目标记为已修改。
请分享一下您的想法,如何编译项目组中所有可用的构建。
谢谢。

1
你必须在集成开发环境中编译吗?否则,只需在命令提示符上使用MSBuild即可。 - Uli Gerhardt
顺便说一句:我在D2007中尝试了配置管理器方法,据我所知它没有标记任何内容为已修改。 - Uli Gerhardt
@Ulrich:我正在使用Delphi XE。在配置管理器中切换构建配置后,它会将项目标记为已修改状态。 - Chau Chee Yang
@Ulrich:不一定非要在集成开发环境中编译。然而,我每年都会为 Delphi IDE 投资几千美元。它应该让我能够完成这些工作。 - Chau Chee Yang
它必须标记所有修改过的内容。如果您的RELEASE版本关闭了调试信息,或者您的DEBUG版本中有一个{$DEFINE DEBUG},而您的RELEASE版本不应包含该定义,那么怎么办?IDE无法知道,因此如果组级配置更改,则需要构建它们全部。 - Ken White
1个回答

7

我已经为*.groupproj添加了一个项到资源管理器上下文菜单,调用的是*.bat文件:

call  "C:\Program Files (x86)\CodeGear\RAD Studio\5.0\bin\rsvars.bat"
MSBuild %1 /t:Build /p:Configuration=Release
if errorlevel 1 goto Fehler

goto :EOF

:Fehler
pause

我可以通过两个鼠标点击从资源管理器中进行发布版本构建。

在资源管理器上下文菜单中ReleaseBuild选项的截图


你是指Windows资源管理器吗?或者你编写了一个Delphi ToolsAPI专家来调用脚本? - Chau Chee Yang
Windows资源管理器。我会尝试添加一个屏幕截图。 - Uli Gerhardt
对于路径中包含空格的情况,你应该引用“%1”参数。 - Ondrej Kelle
2
没问题,但是在将参数传递给MSBuild时应再次加引号(以处理包含空格的路径)。 - Ondrej Kelle
1
我刚刚在"C:\Program Files (x86)\combit\LL15\Programmierbare Beispiele und Deklarationen\Delphi\prtloop\Test Gruppe.groupproj"上尝试了ReleaseBuild项目。如果我将批处理文件保持不变(不带引号),它可以工作。如果我更改为包含MSBuild "%1" /t:Build /p:Configuration=Release,我会得到MSBUILD:错误MSB1008:只能指定一个项目。开关:Files(来自MSDN:“只能指定一个项目。”)。我是否误解了您的意思? - Uli Gerhardt
显示剩余2条评论

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