Ich habe zwei Pakete erstellt, P1.dproj
und P2.dproj
.Warum platziert der Compiler DCUs, die nicht zum aktuellen Paket gehören, in seinem Einheitsausgabeverzeichnis?
Ich habe zwei leere Einheiten in die Verpackungen, so dass P1
enthält Unit1.pas
und P2
Unit2.pas
enthält.
Ich habe das Unit-Ausgabeverzeichnis auf .\P1\$(Platform)\$(Config)
und .\P2\$(Platform)\$(Config)
in den jeweiligen Paketen bearbeitet.
Ich habe P1 als Referenz zum P2-Projekt hinzugefügt, so dass P2 von P1 abhängt.
Die Projektdateien werden im selben Ordner gespeichert.
Die Verzeichnisstruktur sieht wie folgt aus:
Root\
Source\
P1\
Unit1.pas
P2\
Unit2.pas
Packages\
P1.dpk
P1.dproj
P2.dpk
P2.dproj
P1\
Win32\
Debug\
P2\
Win32\
Debug\
Bevor ich die Abhängigkeit P1 hinzugefügt, um eine Packages\P1\Win32\Debug\Unit1.dcu
wurde ausgibt und P2 eine Packages\P21\Win32\Debug\Unit2.dcu
wurde ausgibt.
Nichts unerwartetes.
Nachdem ich die Abhängigkeit hinzugefügt habe, wenn ich nur P2 gebaut habe, kompiliert die IDE automatisch auch P1, aber die Unit1.dcu
Datei wird jetzt in die Packages\P2\Win32\Debug\Unit1.dcu
ausgegeben.
Warum ist das?
Die Unit1.dcu
Datei ist nicht in der Liste der Contains
P2.droj
noch ist es in jedem Bibliothekspfad oder Suchpfad aufgelistet (weder Delphi global noch Projekt lokal).
Warum legt der Compiler Sachen in das Unit-Ausgabeverzeichnis des aktuellen Projekts, auf das er nicht einmal Zugriff auf das Quellverzeichnis hat?
Wenn ich die P1 dpk/dproj Dateien in einen Unterordner verschiebe und die IDE neu starte, wird es sich korrekt beschweren, dass es die Datei P1.dcp
nicht finden kann und nicht mit der Kompilierung von P1 beginnt.
ich dieses Verhalten in einem größeren, komplizierteren Aufbau bemerkt hatte, und es wurde mich verrückt ...
Ich kann das nicht mit Berlin kopieren; hat der Gruppe ein neues Projekt hinzugefügt, eine Abhängigkeit hinzugefügt. Kompiliert, beide kompiliert und für beide Projekte waren die DCUs am richtigen Ort. – FredS
Insbesondere müssen die Projekte "Pakete" sein und Sie müssen eine Referenz von einem Paket zum anderen erstellen (nicht nur eine Build-Abhängigkeit in der Projektgruppe). –
@ JensMühlenhoff - Sie können dies mit der Einstellung "Build Control" in den Projektoptionen von P1 steuern. Der Standardwert ist "Nach Bedarf neu erstellen". Ändern Sie es in "Explicit Rebuild" und es wird dieses Verhalten verhindern. (aktualisiert gerade die Antwort) –