16

有没有人设法使用命令行编译他们的 Delphi 6 和 7(不是任何 Delphi > 7)项目?

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

我正在寻找分步说明。

答案应仅限于 Delphi 6 和 7:我了解 Delphi 2006 并且 > 使用 MSBuild,这要容易得多。

链接也受到高度赞赏。

加思

4

6 回答 6

15

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

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

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

请注意,项目文件和Delphi 目录中cfg的 common都包含重要设置。dcc32.cfg有关它们如何影响构建的一些信息,请参见Delphi Wikia 上的此链接

于 2009-12-03T07:04:59.743 回答
9

对于构建自动化,我使用Apache Ant,它是一种用于自动化软件构建过程的软件工具。我将它用于我的所有项目,从 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 构建脚本,这意味着您可以让它们在您签入源存储库中的更改时自动构建项目。

于 2009-12-03T07:51:06.927 回答
5

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

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

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

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

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

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

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

于 2011-07-29T15:04:32.890 回答
3

FinalBuilder使它变得非常容易。试试看。

于 2009-12-03T06:58:52.947 回答
1

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

于 2009-12-03T08:26:15.337 回答
0

对于更高版本的 Delphi,这应该更改为:

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

于 2011-10-17T14:54:37.413 回答