我试图维护一个存储库,我的代码库中的大部分内容都是源代码,但我们有 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文件夹,或者我可以在其中找到一些魔术?

    最佳答案

    您所谈论的魔法可以在普通 XE2 VCL Forms 应用程序的 .dproj 文件中看到。关键因素是这些变量:

  • $(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) 添加到搜索路径。

    10-08 03:23