我有一个BPG文件,我已将其修改为用作我们公司自动构建服务器的make文件。为了让它发挥作用,我不得不改变

Uses                       *  Uses
  unit1 in 'unit1.pas'     *   unit1
  unit2 in 'unit2.pas'     *   unit2
   ...                     *    ...

在DPR文件中让它工作,没有编译器给我一些关于unit1.pas未找到的guff。 这很烦人,因为我想使用BPG文件实际查看项目中的内容,每次添加新单元时,它都会将'unitx.pas'中的内容自动插入到我的DPR文件中。

我正在运行 make -f [然后是一些选项] ,我正在编译的DPR与make文件不在同一个目录中,但我不确定这是否重要。只要删除'unit1.pas 中的,一切都可以正常编译。

有帮助吗?

解决方案

可能来自IDE中的搜索路径和命令行编译器的搜索路径不同。如果更改命令行编译器的serach路径,则可以使用与IDE中完全相同的源代码。

为命令行编译器配置搜索路径的一种可能性是在名为dcc32.cfg的文件中执行此操作。看看帮助,IDE-help中有dcc32.cfg的简短描述。

其他提示

这个解决方案对我有用。

//{$define PACKAGE}
{$ifdef PACKAGE}
 uses 
  unit1 in 'unit1.pas'
  unit2 in 'unit2.pas'
   ... 
{$else}
 uses 
  unit1 
  unit2
   ...
{$endif}

唯一的问题是无论何时添加新单元,delphi都会在顶部删除 ifdef package

每次我必须将条件放入项目文件中时,我会这样做:

program a;

uses
  ACondUnits;

...

结果

unit ACondUnits;

interface

uses
{$IFDEF UseD7MM}
  Delphi7MM;
{$ELSE}
  FastMM4;
{$ENDIF}

implementation

end.

也许这个技巧也适用于包。没试过。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top