【问题标题】:How do I compile my Delphi project on the command line?如何在命令行上编译我的 Delphi 项目?
【发布时间】:2009-12-03 05:25:11
【问题描述】:

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

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

正在寻找分步说明。

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

链接也很受欢迎。

加特

【问题讨论】:

    标签: delphi command-line compilation delphi-7 delphi-6


    【解决方案1】:

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

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

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

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

    【讨论】:

    【解决方案2】:

    对于构建自动化,我使用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 构建脚本,这意味着您可以让它们在您签入源存储库中的更改时自动构建项目。

    【讨论】:

    • 看起来不错...请给出更多解释
    • 我的回答包括项目主页和维基百科文章的两个链接。您有具体问题吗?
    • 是的,这是一个好方法。我用 NAnt 做了类似的事情,它是 Ant 的一个 .NET 端口。
    【解决方案3】:

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

    "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 executable 非常有用。有了它,我可以编辑 .dof 文本文件并将更改传播到命令行和 IDE。无需为每个项目编辑它。

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

    【讨论】:

    • 我刚刚编写并上传了 bdsproj2cfg 到 CodeCentral,它对 Delphi 2005 和 2006 使用的 .bdsproj 文件执行相同的操作。以防万一有人需要...
    【解决方案4】:

    FinalBuilder 让它变得非常简单。试试看吧。

    【讨论】:

    • 没有添加关于如何解决问题的实际说明(甚至没有链接到说明),这个答案听起来就像是产品展示。
    【解决方案5】:

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

    【讨论】:

    • 我正在使用带有 NAnt 的 CruiseControl.NET。 NAnt 有什么问题,所以你会改用 WANt?
    • 当我第一次开始使用 WANt 时,对构建 Delphi 项目和运行 DUnit 测试的开箱即用支持对我来说似乎更有吸引力。就像我说的,如果我要从头开始,我会尝试 NAnt。
    • @gath:即使在 Delphi 2 中使用这个环境也不会有任何问题。
    • 是的,我有多个运行 CruiseControl.NET、NAnt 和 Delphi 的构建机器。效果很好。 @Gath:如果你真的尝试了这里的一些建议,并阅读了文档和发布的链接,你会很快意识到,正如 mghie 重申的那样,所有这些建议都适用于任何 Delphi 版本。
    【解决方案6】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      相关资源
      最近更新 更多