为什么Delphi不能将DCU文件输出到正确的文件夹中?

时间:2015-10-18 15:25:34

标签: delphi delphi-xe7 win64

我有一个项目(C:\ Test \ Test.dpr),它使用属于库(MyLib.DPK)的文件(External.pas)。图书馆中的所有文件都可以通过“搜索”来访问。路径,但我也直接在我的DPR文件中包含了External.pas:

program Test;

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

对于这个项目,我设置了&#39;输出目录&#39;和&#39;输出DCU目录&#39;到&#34;。\ $(平台)_ $(配置)&#34;。

当我编译时,exe文件的所有DCU都写在正确的输出文件夹中:c:\ Test \ Win64_Debug \

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

为什么?

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

3 个答案:

答案 0 :(得分:4)

来自documentation

  

输出目录

     

指定编译器应放置可执行文件的位置。

     

单位输出目录

     

指定包含已编译单元(.dcu)的单独目录。

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

答案 1 :(得分:3)

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

如果您可以一次性查看所有目标平台的配置,那么IDE的这一部分可以做得更好。

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

要执行此操作,请转到特定目标配置,然后单击字段条目本身,而不是单击其前面的+符号。

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

Project Options

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

因此,为了确保在每个特定目标配置中使用All configurations的输出位置,它们都不应该为输出位置定义自定义值。

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

答案 2 :(得分:2)

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

谢谢大卫。抱歉浪费你的时间。我仍然在努力使用Delphi路径。整个IDE中没有任何东西像路径(搜索,输出,库等)一样令人困惑/怪异