2012-10-16 16 views
8

假设我们有一个团队可以处理许多不同的项目。每个团队成员在其开发周期中使用不同的可视/非可视控件/组件。由于Delphi要求在IDE中全局编译和安装每个组件,因此如何在处理其他团队成员启动的项目时管理这种情况?如何在Delphi中处理项目特定组件?

如果我可以从版本控制中检出项目的源并且能够立即编译它,那将是非常好的。我不在乎或者有时不知道这个项目需要什么视觉或非视觉组件,我想他们都应该包含在项目资源中。

也许有一些工具可以读取主项目文件或目录并编译/安装项目加载时所需的所有组件(并在项目关闭时将其卸载)?

如何在Delphi中处理这个问题?

+2

此问题可能有一些答案给你:http://stackoverflow.com/questions/8957128/setting-up-a-large-software-system-in-delphi。但是,如果您需要编辑表单,则无法至少安装可视组件。我们已经将脚本添加到我们的源代码控制中,以便在注册表中自动卸载和安装相关密钥。当然,需要重新启动IDE。 –

+0

我通常会在每个项目的源代码旁边维护一个“所有组件”包文件,其中包含在特定项目中使用的所有组件。然后,我必须打开一个包并重新构建它,以确保在我开始处理项目源代码之前,所有必需的组件都已到位。 – Elling

回答

4

任何想要编译给定项目的人都必须首先安装项目正在使用的任何组件。除非项目直接包含组件源代码,并且在代码中实例化组件,而不是使用DFM,否则没有必要解决这个问题。 AFAIK,没有IDE工具可以为每个项目自动安装组件(un)。

+5

有一种方法可以通过创建一个IDE插件来实现这一点,该插件可以在项目组打开时自动检测是否需要重新编译“项目特定组件包”并将其安装到IDE中,并在项目组为关闭。但为了做到这一点,您必须修补并挂接到IDE中,因为OpenToolsAPI不够丰富,无法做到这一点。这还需要包具有干净的终结代码。 –

+1

@AndreasHausladen很遗憾,没有人制作过这样的IDE插件。 – Linas

+0

“任何想编译给定项目的人都必须先安装项目正在使用的任何组件......”。实际上,您可以编译该项目而无需安装,但无法编辑表单。如果表单正在抱怨,请按取消 – Maksee

2

约束组件和库将被你的团队使用是非常明智的。如果每个成员决定使用哪个组件,最终的可执行文件或软件包将会增长很多,并且可能会在库之间产生一些不兼容的问题。

此外,您可以额外购买和更新非常相似的库。请记住,每次更新Delphi时,都应该从大多数库中购买新许可证。

所以最好的办法是:

  • 问哪些库每个开发者使用,并与他们讨论每个人的实际需要;

  • 将这些库需要目录,并将它们安装到您将编译最终代码的机器上;

+2

我同意你的方法应该可行......但这是非常不方便的海事组织。如果开发人员仅为一个项目定制组件,该怎么办?为什么所有其他开发者需要安装它?也是这样,我将不得不维护所有这些已安装的组件,以确保它们都是最新的。如果IDE支持为每个项目安装组件,则可以避免所有这些问题。 – Linas

5

在我们公司,我们有同样的问题。 我们通过强制每个人将所有必需的库路径添加到他们的delphi ide来解决这个问题。

我们正在使用一个额外的sdk/framwork存储库,其中包含每个人的所有组件/ sdks /框架。 我们保留一个文本文件,列出所有库的版本,安装信息等。 每个人都检查他们想要的库,所以我们没有双库或不同的版本。

由于我们都在Windows下工作,并且由于Delphi保留其路径和(afaik)安装组件信息在注册表中,我们提取了这些信息。 我们为每个使用的delphi版本在sdk存储库树干中存储一个.reg文件。

因此,如果有人更改了框架,他会更新.reg文件中每个人的信息并提交它。

现在,如果有人想要设置他们的开发机器,他们检出sdk,添加例如XE2。将信息注册到他们的注册中心,然后查看该项目和... tada。编译。

我们还没有尝试提取“安装的组件”软件包。这就是我们的待办事项清单。 另一种方法是保存批处理文件,以便一次构建和安装所有sdk包。但我不知道是否可以在delphi中通过命令行安装组件。

像JEDI安装程序会很好。安装程序检测已安装的Delphi版本并编译&可以很好地安装所有程序。 一个可自由配置的版本会很好,所以添加所有sdks - >在每个版本上安装..完美。

相关问题