为什么 Delphi 没有在正确的文件夹中输出 DCU 文件?

Why Delphi does not output the DCU files in the correct folder?

我有一个项目 (C:\Test\Test.dpr) 使用属于库 (MyLib.DPK) 的文件 (External.pas)。库中的所有文件都可以通过 'Search' 路径访问,但我还在我的 DPR 文件中直接包含了 External.pas:

program Test;

uses
  External in '..\Packages\MyLib\External.pas',   <------ the 'external' file
  FormMain in 'FormMain.pas' {frmMain};

对于这个项目,我将 'Output directory' 和 'Output DCU dir' 设置为“.\$(Platform)_$(Config)”。

我编译的时候这个项目所有DCU的exe文件都写在正确的输出文件夹:c:\Test\Win64_Debug\

然而,External.dcu是在..\Packages\MyLib\External.dcu
中生成的 而不是 c:\Test\Win64_Debug\

这是为什么?


让我换个方式问这个问题:如果我在一个 DPR 项目中附加了一个位于不同文件夹中的 PAS 文件,所有的 DCU 文件(包括外部文件)不应该在同一个文件夹中生成吗作为 EXE 文件?

该死的...我又做了一次...我为 'All configurations - All Platforms' 设置了目标,但是 'Debug config-64bit windows platform' 的路径已经设置为其他内容。因此,当我在 'All configurations' 中设置(正确的)路径时,'Debug config-64bit windows platform' 保持原样。我有 12 种可能的配置(调试、发布、预发布),所以我没有看到 'Debug config-64bit windows platform' 仍然设置为原始值。项目选项的 GUI 会导致很多错误!

谢谢大卫。抱歉浪费您的时间。我仍在为 Delphi 路径而苦苦挣扎。整个 IDE 中没有任何东西像 confusing/weird 作为路径(搜索、输出、库等)

来自documentation

Output directory

Specifies where the compiler should put the executable file.

Unit output directory

Specifies a separate directory to contain the compiled units (.dcu).

听起来你需要指定单元输出目录以及输出目录。我个人倾向于将这两个目录分开。

是的,项目选项 UI 可能会非常混乱,尤其是因为为了访问每个目标平台的设置,您需要通过下拉列表切换到该目标平台。

如果您可以同时看到所有目标平台的配置,IDE 的这一部分可以做得更好。

现在,如果您希望能够在一个位置(所有配置)维护输出路径设置,您只需确保特定的目标配置不会覆盖它。

为此,转到特定的目标配置,然后不要单击字段条目本身,而是单击它前面的 + 符号。

这将扩展当前 属性 字段,并显示父配置的值,可以从中继承此 属性。

注意:虽然许多属性确实可以继承(属性 来自目标配置的值被添加到来自父方案的属性,例如)Output directoryUnit output directory 因为它们只能包含一个值被简单地覆盖。

因此,为了确保 All configurations 的输出位置用于每个特定的目标配置,其中 none 不应该为输出位置定义自定义值。

换句话说,当您展开特定 属性 时,Release configuration - ...Debug configuration - ... 的值必须为空,如上图所示。