Delphi 7 make beschwert sich über Dateien nicht gefunden
Frage
Ich habe eine BPG-Datei, die ich geändert hat als Make-Datei für unser Unternehmen automatisierten Build-Server zu verwenden. Um ich hatte, um es zu ändern, zu arbeiten
Uses * Uses unit1 in 'unit1.pas' * unit1 unit2 in 'unit2.pas' * unit2 ... * ...
in der DPR-Datei zu erhalten, ohne die Compiler zu arbeiten, um mir einige guff über unit1.pas nicht gefunden zu geben. Das ist ärgerlich, weil ich eine BPG-Datei verwenden mag, um tatsächlich das Zeug in meinem Projekt zu sehen und jedes Mal, wenn ich ein neues Gerät hinzufügen, es Auto-Buchsen, die in ‚unitx.pas‘ in meine DPR-Datei.
Ich bin mit make -f [then some options]
, die der DVR, dass wir kompilieren sind nicht im selben Verzeichnis wie die Make-Datei, aber ich bin nicht sicher, dass dies wichtig ist. Alles kompiliert in Ordnung, solange die in 'unit1.pas
entfernt wird.
Lösung
Es könnte aus der Tatsache kommt, dass der Suchpfad in der IDE und der Suchpfad der Befehlszeilen-Compiler ist nicht das gleiche. Wenn Sie den serach Pfad der Compiler-Befehlszeile ändern könnten Sie die exactely gleichen Quellcode wie in den IDE verwenden können.
Eine Möglichkeit, den Suchpfad für die Kommandozeilen-Compiler zu konfigurieren, ist es in einer Datei DCC32.CFG genannt zu tun. Werfen Sie einen Blick auf die Hilfe, gibt es eine kurze Beschreibung von DCC32.CFG in der IDE-Hilfe.
Andere Tipps
Gut, das Work-around für mich gearbeitet.
//{$define PACKAGE} {$ifdef PACKAGE} uses unit1 in 'unit1.pas' unit2 in 'unit2.pas' ... {$else} uses unit1 unit2 ... {$endif}
Das einzige Problem ist, wenn Sie ein neues Gerät hinzufügen, delphi Ihre ifdef package
an der Spitze löscht.
Jedes Mal, ich habe conditionals in eine Projektdatei habe ich dies tun:
program a;
uses
ACondUnits;
...
unit ACondUnits;
interface
uses
{$IFDEF UseD7MM}
Delphi7MM;
{$ELSE}
FastMM4;
{$ENDIF}
implementation
end.
Vielleicht ist dieser Trick auch in Paketen arbeitet. Nie genommen.