为什么 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 作为路径(搜索、输出、库等)
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 directory
和 Unit output directory
因为它们只能包含一个值被简单地覆盖。
因此,为了确保 All configurations
的输出位置用于每个特定的目标配置,其中 none 不应该为输出位置定义自定义值。
换句话说,当您展开特定 属性 时,Release configuration - ...
或 Debug configuration - ...
的值必须为空,如上图所示。
我有一个项目 (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 作为路径(搜索、输出、库等)
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 directory
和 Unit output directory
因为它们只能包含一个值被简单地覆盖。
因此,为了确保 All configurations
的输出位置用于每个特定的目标配置,其中 none 不应该为输出位置定义自定义值。
换句话说,当您展开特定 属性 时,Release configuration - ...
或 Debug configuration - ...
的值必须为空,如上图所示。