【问题标题】:How to compile with DCC32 as in the IDE如何在 IDE 中使用 DCC32 进行编译
【发布时间】:2020-11-16 17:44:38
【问题描述】:

我正在尝试自动构建我的项目,使用 DCC32 进行编译。

在 IDE 中编译的同一个项目可以编译,但是当我调用 DCC32 时,我得到以下错误:

c:\myproject>dcc32 myproject.dpr
Embarcadero Delphi for Win32 compiler version 33.0
Copyright (c) 1983,2018 Embarcadero Technologies, Inc.
myproject.dpr(56) Fatal: F2613 Unit 'Forms' not found.

我应该如何处理 DCC32 与 IDE 编译器完全一样的工作?

【问题讨论】:

  • 这取决于您使用的库、创建单元的版本以及编译项目的版本。但由于 dcc32 将仅使用 .dpr 文件进行编译(以及它引用的单元),因此在 .dproj 文件中设置的所有其他编译器选项都需要作为 dcc32 的命令行参数提供。关于您的错误:您需要指定单元前缀,例如“vcl”。
  • 好的,我可以通过添加“Vcl.”来解决这个特定问题。在“表格”之前。但是像这样的问题还有很多。有没有一种方法可以像 IDE 编译一样进行 dcc32 编译,而无需进一步配置?也许我错过了一些 DCC32 开关
  • 抱歉造成误解,但我将“指定单位别名”作为命令行参数(例如 -A Forms=Vcl.Forms)。这样你就不需要修改你的代码。但是您需要指定更多内容。请参阅命令行选项列表docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/…。但是你还需要为图书馆等提供搜索誓言......
  • 我只想像 IDE 一样编译 DCC32...这应该很容易,因为 IDE 编译正常,没有任何错误
  • 不要直接调用dcc32,使用msbuild。那么这些烦恼都会烟消云散。

标签: delphi delphi-10.3-rio


【解决方案1】:

我认为您需要在运行 dcc 之前运行 rsvars.bat

你可以在$(BDSCOMMONDIR)找到它,我是C:\Program Files x86\Embarcadero\Studio\17.0\bin\rsvars.bat

这会设置相关的环境变量,以便dcc 可以获取它需要的引用。

【讨论】:

  • 这适用于 Delphi 单元,如表单、系统等。但现在它为我自己的单元返回错误,这些单元已经在库路径上。就像 DCC32 没有像 IDE 那样搜索库路径
  • 请注意,您也可以使用 dcc 从命令行编译,使用 MSBuild。在这种情况下,您运行 rsvars.bat,然后按如下方式调用 MSBuild:msbuild project.dproj /t:Rebuild /p:config=Release
  • 我会亲自通过msbuild 构建它,如上所述 - 您的 dproj 应该包含构建项目所需的所有信息 msbuilddcc (只需先运行 rsvars.bat) .我不确定您必须通过 Vcl.Forms 手动编辑表单是什么意思,如果它全部按原样在 IDE 中构建,那么您缺少 dcc 的某些内容(猜测,您需要 -U 选项来指定你的库路径)....但正如我所说,msbuild 应该只调用dcc 并传递它需要的所有数据
  • 您可能已经安装了它,请参阅details here
  • @delphirules "[MSBuild] 是 Delphi 的一部分吗?" - 是的,自 Delphi 2007 以来一直如此。有关详细信息,请参阅 Delphi's MSBuild documentation。编译整个项目时无需直接调用dcc32
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-13
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
  • 2022-08-24
相关资源
最近更新 更多