我有一个BPG文件,我已将其修改为用作我们公司自动构建服务器的make文件。为了让它发挥作用,我不得不改变
Uses * Uses unit1 in 'unit1.pas' * unit1 unit2 in 'unit2.pas' * unit2 ... * ...
在DPR文件中让它工作而没有编译器给我一些关于unit1.pas未找到的guff。 这很烦人,因为我想使用BPG文件实际查看项目中的内容,每次添加新单元时,它都会将'unitx.pas'中的内容自动插入到我的DPR文件中。
我正在运行make -f [then some options]
,我正在编译的DPR与make文件不在同一个目录中,但我不确定这是否重要。只要移除in 'unit1.pas
,一切都会很好。
答案 0 :(得分:2)
可能来自IDE中的搜索路径和命令行编译器的搜索路径不同。如果更改命令行编译器的serach路径,则可以使用与IDE中完全相同的源代码。
为命令行编译器配置搜索路径的一种可能性是在名为dcc32.cfg的文件中执行此操作。看看帮助,IDE-help中有dcc32.cfg的简短描述。
答案 1 :(得分:1)
这个解决方案对我有用。
//{$define PACKAGE} {$ifdef PACKAGE} uses unit1 in 'unit1.pas' unit2 in 'unit2.pas' ... {$else} uses unit1 unit2 ... {$endif}
唯一的问题是无论何时添加新单元,delphi都会删除顶部的ifdef package
。
答案 2 :(得分:0)
每次我必须将条件放入项目文件中时,我会这样做:
program a;
uses
ACondUnits;
...
unit ACondUnits;
interface
uses
{$IFDEF UseD7MM}
Delphi7MM;
{$ELSE}
FastMM4;
{$ENDIF}
implementation
end.
也许这个技巧也适用于包。没试过。