要移动到SVN存储库进行编译的最小Delphi 2010文件集

时间:2010-06-15 00:53:50

标签: svn delphi finalbuilder

我们正在使用Subversion for SCC。我们的存储库中有很多构建环境,因此我们可以检查给定的版本并将其重建得非常接近当时正在使用的版本。我们现在有以下内容:

  • InnoSetup二进制文件
  • 第三方组件
  • VCL(包括Indy)
  • 我们的来源(当然)
  • Finalbuilder项目文件

唯一缺少的是Delphi本身的二进制文件 - 我想知道是否有一组最小的文件可以复制到存储库并运行。

由于

4 个答案:

答案 0 :(得分:3)

好的 - 我想我有这个工作。我能够在没有安装任何开发人员工具(RAD Studio,EurekaLog等)的VMware客户端下编译我们的应用程序。基本上我有一个包含这些文件的Compiler文件夹:

原来你只需要一些文件。基本上这些文件:

02/05/2008  05:13 PM            89,088 BorDebug.dll  
11/02/2009  06:02 PM            57,344 Borland.Build.Tasks.Common.dll  
11/02/2009  06:02 PM           147,456 Borland.Build.Tasks.Delphi.dll  
11/02/2009  06:02 PM            49,152 Borland.Build.Tasks.Shared.dll  
11/02/2009  06:02 PM            20,480 Borland.Globalization.dll  
08/19/2009  05:00 PM            22,370 CodeGear.Common.Targets  
08/19/2009  05:00 PM            32,928 CodeGear.Delphi.Targets  
11/02/2009  06:02 PM         1,328,128 DCC32.EXE  
02/25/2010  08:17 AM           979,456 ecc32.exe  
11/02/2009  06:02 PM           314,368 lnkdfm140.dll  
02/25/2010  08:11 AM            40,960 Process.exe  
08/19/2009  05:00 PM            75,264 rlink32.dll  
06/15/2010  08:41 AM               185 rsvars.bat  

也许我还可以剪掉更多这些文件。我们还有一个组件文件夹,其中包含所有内置VCL文件(基本上是lib和Indy10文件夹)和我们的第三方组件。在Delphi中,我将库路径设置空白 - 这一步是关键。然后,我将库路径设置放在特定的项目选项中。我们使用环境变量来指定内置和第三方文件的位置。这些环境变量在RAD Studio中设置,然后在执行发布编译时可以通过命令行进行设置。所以我们有一个像这样的BAT文件:

SET BDS=C:\_Releases\Compiler
SET COREFILES=C:\_Components\D2010
SET COMPONENTS=C:\_Components
SET LANGDIR=EN

我们的库路径看起来像这样:

$(COREFILES)\lib;$(COREFILES)\Indy10;$(COMPONENTS)\EurekaLog;$(COMPONENTS)\Jcl\source\common;$(COMPONENTS)\Jcl\source\windows

现在在我们的原始VMware会话中,只有MSBuild和上面描述的原始文件,我可以调用这些命令:

msbuild project.dproj -t:rebuild /p:config=Release  
ecc32 --el_alter_exe"project.dproj"

构建我们的应用程序。当然,我们只是使用了Delphi32个性化的东西,这简化了事情,但对我们来说,我觉得这会很棒。

答案 1 :(得分:2)

如果要创建可以轻松复制的构建环境,最好设置虚拟机并将图像托管在网络共享上,而不是尝试通过SVN服务器处理数千个单独的文件

答案 2 :(得分:2)

我们即将着手为Delphi 2010做好准备。我们之前(当前)确实使用Delphi 2006为我们的FinalBuilder自动构建设置了这个设置。

在这种情况下,我们所做的只是获取Delphi 2006本身的安装文件夹(Program Files \ Borland \ BDS \ 4.0)的内容的副本。这就是一切,Bin,Lib ......很多(就像我们在开发机器上一样)。

开发机器和构建机器之间的唯一区别是Delphi实际上并未在该机器上安装,但这不会影响运行命令行编译器的能力(这是我们在自动构建中使用的)

我们唯一需要做的就是手动创建一些注册表项,以便FinalBuilder检测并识别机器上Delphi 2006的存在并提供所需的库路径等。这是我们通过导出必要的键/来自dev机器的值并导入到构建机器的注册表中(结果.reg文件也是存储库中我们的构建配置的一部分)。

我不能说最小文件集是什么,因为我们不关心节省磁盘空间,只是简单地把所有东西都“以防万一”。你可以通过削减一些脂肪来节省几MB,但与自动构建环境(源代码,中间产品和编译产品等)的磁盘消耗相比,我怀疑节省的成本可以忽略不计,不值得麻烦。

答案 3 :(得分:1)

Delphi许可证在几个版本之前已经更新,明确允许在构建PC上安装命令行编译器以进行自动构建,因此我同意Mason的说法,建立一个单独的机器是个好主意(虚拟是好的)进行构建。

我将以下树结构(文件夹和所有包含的文件和子文件夹)从我安装了Delphi(在我的案例中为2007)的PC复制到单独的构建框后,我可以成功地执行Delphi命令行构建。似乎没有必要输入任何注册表项/值等。它对我来说效果很好。

C:\Program Files
  \CodeGear
    \RAD Studio
      \5.0
        \bin\*.*
        \lib\*.*
        \source\*.*
  \Common Files
    \RAD Studio
      \Shared Assemblies
        \5.0\*.*

我希望Delphi 2009/2010能够相同/相似。

我的SVN存储库中有上面的树结构以及我们所有的源代码,所以如果我设置一个新的构建PC,我的大多数初始设置只需要在新构建PC上的正确位置进行SVN Checkout。