【问题标题】:How can I compile 32- and 64-bit DCUs into separate directories?如何将 32 位和 64 位 DCU 编译到单独的目录中?
【发布时间】:2012-01-15 01:33:20
【问题描述】:

我正在尝试维护一个存储库,我的代码库中的大部分内容都是源代码,但我们有 QuickPDF 库,它是一堆预编译的 DCU。我想以某种方式将它们置于版本控制中,但我不想在将其余的万亿 LOC 代码库转换为 win64 之前为 win64 设置另一个选项。

我的想法只是拥有(quickPDF 只是一个例子,这个库除了不幸的预编译之外没有什么特别的)

  • ctrls\quickpdf\QuickPDF.pas
  • ctrls\quickpdf\win32[*.dcu]
  • ctrls\quickpdf\win64[*.dcu]

从 Program Files 中的文件夹的外观来看,Embarcadero 对 VCL 做了类似的事情。那里甚至还有一些预编译的东西,比如 VCL.Imaging.JPEG.pas。

我该如何做同样的事情?我是否需要指定 win32 和 win64 文件夹,或者我可以在某个地方使用什么魔法?

【问题讨论】:

  • 不确定您在问什么?您是否想要一个可以扩展的宏,以便您的库路径会自动重定向到 _32 或 _64 后缀?因为我觉得你只是分别设置了 32 位库路径和 64 位库路径吧?你就完成了。
  • @Warren P,谢谢,不知何故,这条评论让我开始思考,我实际上在 Tools->Options 下查看了 VCL 的库路径。现在有答案了。

标签: delphi 32bit-64bit delphi-xe2


【解决方案1】:

您所说的魔力可以在 .dproj 文件中看到,它是一个普通的 XE2 VCL Forms 应用程序。关键成分是这些变量:

  • $(Platform) 在 Windows 上可以是 Win32 或 Win64。
  • $(Config) 通常是 Debug 或 Release。

然后在 .dproj 文件中,以下 XML 执行了魔法:

<PropertyGroup Condition="'$(Base)'!=''">
    <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
    <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
</PropertyGroup>

您可以将这些技巧与 $(Platform)$(Config) 变量与任何项目选项一起使用。因此,您只需要使用这些变量来设置需要为编译器设置的任何选项,以找到您的预编译 DCU。

据我所知,您需要设置的选项是搜索路径。尽管我承认对搜索路径的工作方式很模糊,因为我个人从不依赖搜索路径,并且总是明确地将所有源文件包含在我的项目中。在您的示例中,您可以将 ctrls\quickpdf\($Platform) 添加到搜索路径中。

【讨论】:

  • 只是想指出,即使它在 IDE 中显示为灰色,它仍然可以工作(点击“删除无效路径”时有点烦人)
  • @Peter 它是灰色的,因为您需要选择基本配置(vanilla 项目中的所有配置)才能对其进行编辑。
  • 是的,我已经在基本配置中得到了它。在下面查看我的帖子 - 我刚刚添加了一张图片。
  • 哦,我明白你在说什么,问题是 A。)这些是预编译的 DCU 文件(我没有它们的源代码,我对此并不满意,但是,哦,好吧)和B.)你真的把单元输出目录放在版本控制中吗?我们刚开始在项目中使用 SVN(VSS 保留),我只是将 DCU 文件夹更改为相对路径,所以直到最近我才考虑过这个。
  • @david:是的,应该这样做。我同意输出目录(和 exe 目录)应该在源代码控制之下。我们有它们的相对路径,我们 53+ 套件中的每个项目都有自己的 dcu 文件夹。这样,一个项目的编译器/条件定义永远不会弄乱另一个项目的 dcu。并且允许 32/64“拆分”是“轻而易举”(我们只需将大量“EnsureFolder.txt”文件添加到我们的存储库中,因此所有这些 dcu 文件夹都保证存在于我们的构建服务器中。跨度>
【解决方案2】:

很简单,添加:

  • ..\ctrls\quickpdf\$(平台)

到您的项目搜索路径

虽然当您发现这确实有效时您会感到惊讶,因为它在 IDE 中显示为灰色。

【讨论】:

  • 注意:通常“单元输出目录”(如 David Heffernan 的回答所示)被视为搜索路径的一部分(默认情况下)。与此解决方案不同,您不会遇到路径变灰的烦人问题。
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2018-03-27
  • 2011-04-12
  • 2014-01-12
  • 2020-12-26
  • 2018-08-04
  • 2011-05-01
相关资源
最近更新 更多