如何在命令行上编译我的delphi项目?

时间:2009-12-03 05:25:11

标签: delphi command-line compilation

有没有人设法在那里编译Delphi 6& 7(不是任何Delphi> 7)项目使用命令行?

我看到的所有说明都不清楚到底需要去哪里!

我正在寻找一步一步的指示。

答案应限于Delphi 6& 7,我理解Delphi2006和>使用MSBuild,这要容易得多。

链接也受到高度赞赏。

加特

6 个答案:

答案 0 :(得分:15)

这并不困难。我在我的机器上安装了标准的Delphi 5,当我打开命令提示符时,导航到$(DELPHI)\Demos\Threads目录并输入dcc32.exe thrddemo.dpr应用程序是在命令行上构建的。

对于您自己的项目,您可能需要添加一些开关以包含文件目录,输出目录,定义或类似的东西。不带参数运行dcc32.exe会给出一个开关和参数列表。这一切都在文档中描述。

为了重复性,您应该创建批处理文件或常规Makefile。

请注意,项目cfg文件和Delphi目录中的公共dcc32.cfg都包含重要设置。有关它们如何影响构建的一些信息,请参阅this link on Delphi Wikia

答案 1 :(得分:8)

对于构建自动化,我使用Apache Ant,即a software tool for automating software build processes。我将它用于我的所有项目,从Delphi 6到Delphi 2009,以及Free Pascal。

它可以做到的“开箱即用”包括MD5校验和生成,ZIP文件创建,文本搜索/替换(对版权标题生成有用),SQL语句执行,XSLT处理。

例如,要使用Delphi 6编译所有项目,这是脚本的一部分:

<target name="compile_d6">
  <!-- Compile with Delphi 6 -->
  <apply executable="${d6}\Bin\dcc32" failonerror="true" output="build-d6.log" >
    <!-- rebuild quiet -->
    <arg value="-B"/>
    <arg value="-Q"/>
    <!-- file paths -->
    <arg value="-I${source};${indy10}/Lib/System"/>
    <arg value="-O${source};${indy10}/D6;${jcl}/d6"/>
    <arg value="-U${source};${indy10}/D6;${jcl}/d6"/>  
    <!-- all *.dpr files in current directory -->
    <fileset dir=".">
      <patternset><include name="*.dpr"/></patternset>
    </fileset>
  </apply>
</target>

像Hudson / Jenkins这样的免费开源CI(连续集成)服务器支持开箱即用的Apache Ant构建脚本,这意味着只要您在源存储库中检查了更改,就可以让它们自动构建项目。

答案 2 :(得分:5)

您可以使用以下命令行构建所有内容:

"C:\Program Files\Borland\Delphi7\Bin\DCC32.exe" -Q -B your-project.dpr

将此行放在.bat文件中,这样您就不需要总是输入它。看一下运行它的命令行选项:

"C:\Program Files\Borland\Delphi7\Bin\DCC32.exe" -h

BTW:-Q是安静的编译,-B将重建所有内容。如果您想要更快速的编译,请不要使用-B。

它将使用your project.cfg文件中的所有选项。我发现这个dof2cfg executable非常有用。有了它,我可以编辑.dof文本文件并将更改传播到命令行和IDE。无需为每个项目编辑它。

长路径的重要警告: Delphi 7命令行编译器有一个非常奇怪的错误。如果您的路径很长,它将失败并出现一个难以理解的错误:没有任何有意义信息的访问冲突。如果在没有任何合理动机的情况下失败,请尝试减小最大路径大小和文件名大小。将项目放在根文件夹中通常可以解决它。

答案 3 :(得分:4)

FinalBuilder让它变得非常简单。试一试。

答案 4 :(得分:1)

我建议结合使用NAnt和dcc32,但也有JuancarloAñez的"WAnt - A Pascal-Friendly Build Tool"。我一直在使用1.x的修改版本而不是2.x alpha。由于它是开源的,我可以扩展代码以XML格式输出日志,格式与NAnt相同,所以我可以将它与CruiseControl.NET集成。

答案 5 :(得分:0)

对于Delphi的更高版本,应将其更改为:

“C:\ Program Files(x86)\ Embarcadero \ RAD Studio \ 8.0 \ bin \ DCC32.exe”-h