AW: Pascal Project Manager & Editor
@ jziersch:
Ich verwende eigentlich immer nur Delphi selber zum compilieren, mit dem händischen Aufruf des externen Compilers habe ich nur wenige Erfahrungen. Hast Du ein Beispiel, wie ich ein Projekt mit welchen Parametern aufrufen müsste, damit es kompiliert (und dabei z.B. Suchpfade, etc. richtig berücksichtigt)? Und einmal als Release, bzw. einmal als Debug-Version? By the way: Habe gerade ein neues Video hochgeladen, das einmal zeigt, wie man recht schnell ein einfaches VCL-Formular und die darin enthaltene Programmlogik mit Hilfe des Pascal-Editors nach FMX konvertieren kann: https://youtu.be/rpN6C9Y1yHg Dies kann z.B. dann eine Hilfe sein, wenn einem der Mida-Konverter [http://midaconverter.com] nicht (auf einem bestimmten PC oder gar nicht) zur Verfügung steht oder man eine Konvertierung einfach nur Schritt für Schritt durchführen möchte. Die gezeigte Erweiterung (nun auch Images aus einer FMX-Imagelist einzeln exportieren zu können), ist in der aktualisierten Version 3.22 bereits Online. Edit: Ach ja: Auch habe ich die Programme schon mal auf die kommende Version Delphi 10.4 soweit wie möglich angepasst, nach den "üblichen Regeln", wie bislang immer Versionsnummern etc. geändert wurden (aus allgemein zugänglichen Quellen, z.B. kein Beta-Test-Wissen oder ähnliches). Da noch nicht bekannt ist, wie Delphi 10.4 mal später genau heißen wird, erscheint derzeit noch ein Delphi 10.4 XXX, das dann später bei Release von Delphi 10.4 durch den richtigen Namen ersetzt wird. Die Programmteile zur Anzeige von VCL und FMX-Formulare wurden daher mit Delphi 10.3.3 kompiliert und werden spätern mit 10.4 aktualisiert, wenn verfügbar. Der Lazarus-Part wurde auf 2.08 aktualisiert (hier wurden auch eine ganze Reihe von Komponenten für die Anzeige in Formularen hinzugenommen, wie etwa Synedit oder letzte neuere Komponenten). |
AW: Pascal Project Manager & Editor
Zitat:
Das kompilieren aus der IDE birgt immer das Risiko, dass durch einer Konfigurationsänderung das Projekt entweder nicht oder falsch kompiliert wird. Durch das kompilieren durch einem direkten Aufruf vermeidet man auch das Problem dass ein vergessenes Compilersymbol im Projekt (z.b. DEBUG) ein unerwünschtes Ergebnis erzeugt. Auch kann ein Projekt mit einem festgelegten Setup von Komponenten gebaut werden, also z.b. einer früheren Version von WPTools also der aktuellen die in der IDE installiert ist. Zitat:
Ansonsten funktioniert Deine Methode eigentlich, nur dass eben alle Verzeichnisse eingebunden werden müssen, die man zu einem bestimmten Zeitpunkt aus der IDE ausgelesen hat. Das auslesen geht ja bereits mittels des Knopf rechts oben, das Ergebnis müsste nur noch abgespeichert und verwendet werden. Das ist vor allem der jeweilige Bibliothekspfad und der Suchpfad. Es ist für dein Programmes meiner Meinung nach unabdingbar, dass dieser Pfad mit verwaltet wird. Denn es geht doch darum, ein Projekt so genau wie möglich zu erfassen, also alle Abhängigkeiten zu kennen. Zusätzlich sollte man compiler Symbole angeben können.
Code:
Hier wird aus dem Verzeichnis mit allen Compilern (heißt bei mir "Borland" und beinhaltet 19 Delphi Editionen in friedlicher Koexistenz) Delphi 10.2 gestartet um die wPDF DLL zu erzeugen. Dabei wird ein Quellverzeichnis hinzugefügt. Mehr ist eigentlich nicht dabei.
C:\Borland\DX12\Bin\dcc32.exe -DWPDFREGDLL -NSVcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;System;Xml;Data;Datasnap;Web;Soap; -DWPDF3 -DWPDF4 -$D- -B+ C:\S\wPDF\Source\
Compile_wPDF_DLL.dpr Die Ausgabe des Compilers könnte man (wie ich oben schrieb) dazu verwenden, alle Units zu listen welche wirklich verwendet werden. |
AW: Pascal Project Manager & Editor
Etwas feedback zu der aktuellen Version:
1) Der Editor ist sehr schön, übersichtlich und nutzbar. 2) Die Formularansicht funktioniert gut. Ich fände es noch toll wenn die Struktur und die Textansicht zusammenarbeiten würden, sodass die Struktur Schachtelungen anzeigt und sowohl Klick (Auswahl) als auch Drag&Drop Operationen (Verschieben) auf der Textansicht anwenden könnte. 3) Beim Öffnen eines Projektes wurden bei einem Projekt alle Dateien unter "Projektdateien" gelistet, ohne Rücksicht darauf ob die verwendet werden. Ist das so gewünscht? 4) Beim Compilieren wird die Ausgabe verkürzt, es wird immer nur der Projektname gelistet. Sinnvoll wäre es die Ausgabe auszuwerten, z.b. nur Fehler zu listen und zusätzlich die verwendeten units anzugeben. 5) Bei DLL Projekten sollte für die Ausführung eine consumer EXE angebbar sein. |
AW: Pascal Project Manager & Editor
[QUOTE=jziersch;1462443]
Zitat:
Nein, die beiden Konfigurationen (und theoretisch weitere, die man anlegen kann) unterscheiden sich potentiell durch jede einzelne mögliche Compiler- und Linker-Option, durch unterschiedliche Suchpfade und ggf. auch noch unterschiedliche Pre-/Post-Scripts. Ach ja, habe ich schon die Versionsinfos erwähnt? Üblicherweise ist bei mir z.B. im Debug-Modus die Optimierung ausgeschaltet, es werden Debug-DCUs verwendet, es werden diverse Laufzeit-Checks eingeschaltet. Im Release-Modus ist es dann umgekehrt, selbst Assertions sind bei Relesaes manchmal aus. Es ist aber eigentlich auch recht einfach, diesen Modus an msbuild zu übergeben, der Rest passiert dann genauso wie in der IDE:
Code:
Dabei muss man %DelphiPath% natürlich passend setzen, so das rsvars.bat gefunden wird.
call "%DelphiPath%\bin\rsvars.bat"
msbuild myproject.dproj /target:rebuild /p:config=debug Edit: Bei Delphi 2007 ist es ein wenig anders:
Code:
(also Configuration statt Config).
call "%DelphiPath%\bin\rsvars.bat"
msbuild myproject.dproj /target:rebuild /p:Configuration=debug |
AW: Pascal Project Manager & Editor
Liste der Anhänge anzeigen (Anzahl: 1)
OK, vielen Dank Euch beiden für die hilfreichen Hinweise.
Ich bastele gerade ein wenig daran rum, siehe anliegenden Screenshot. Habe also den Aufruf des Kompilierungsvorgangs in einen eigenen Dialog gelegt, wo man bestimmte Auswahlen treffen kann. DCC funktioniert wie bisher. Für MSBuild funktioniert bereits die einfache Wahl Release oder Debug. Wie wähle ich hier, ob ein 32-Bit oder 64-Bit Kompilat erzeugt wird? Und wie, für welche Plattform (Windows, MAC, usw) erzeugt werden soll? Außerdem werden anscheinend alle Plattformen mit diesem Aufruf erzeugt, oder? Wenn man den DCC-Compiler verwendet und man dort die Suchpfade angeben will (ist Das der "-I" oder "-U" Parameter?) kann der dann selber solche Angaben auflösen wie: $(crossvcl)\Lib\$(ProductVersion)\$(Platform)\$(Co nfig) ? Wo schreibt der DCC-Compiler eigentlich die erzeugten DCU-Units hin, ich kann die hier im Moment gar nicht finden? |
AW: Pascal Project Manager & Editor
-E<path> = Ausgabeverzeichnis für EXE
-N<path> = DCU-Ausgabeverzeichnis -O<paths> = Objektverzeichnisse Hier die Optionen für Delphi 7:
Code:
Für Delphi 10.3 - 64 bit
Syntax: dcc32 [optionen] dateiname [optionen]
-A<unit>=<alias> = Unit-Alias setzen -LU<package> = Package verwenden -B = Alle Units erzeugen -M = Modifizierte Units erzeugen -CC = Ziel: Konsole -N<path> = DCU-Ausgabeverzeichnis -CG = Ziel: GUI -O<paths> = Objektverzeichnisse -D<syms> = Bedingungen definieren -P = Auch nach 8.3-Dateinamen suchen -E<path> = Ausgabeverzeichnis für EXE -Q = Ohne Meldung compilieren (Quiet) -F<offset> = Suchfehler -R<paths> = Ressourcenverzeichnisse -GD = Detaillierte Map-Datei -U<paths> = Unit-Verzeichnisse -GP = Map-Datei mit publics -V = Debug-Information in EXE -GS = Map-Datei mit Segmenten -VR = Externe Fehlersuche gen. -H = Ausgabe von Hinweismeldungen -W = Ausgabe von Warnungen -I<paths> = Include-Verzeichnisse -Z = Ausgabe nie zu erstellender DCPs -J = .obj-Dateien generieren -$<dir> = Compiler-Direktive -JP = C++-.obj-Datei generieren --help = Diesen Hilfebildschirm anzeigen -K<addr> = Image-Basisadresse --version = Name und Version anzeigen Compiler-Schalter: $<buchst><status> (Vorgabewerte siehe unten) A8 Ausgerichtete Record-Felder P+ Offene String-Parameter B- Vollst. boolesche Auswertung Q- Integer-Überlaufprüfung C+ Zur Laufzeit Bedingungen auswerten R- Bereichsüberprüfung D+ Debug-Information T- Typisierter @-Operator G+ Importierte Datenreferenzen verw. U- Pentium(tm)-sichere Division H+ Standardmäßig lange Strings verw. V+ Strenge Prüfung von var-Strings I+ Ein-/Ausgabeprüfung W- Stack-Frames erzeugen J- Strukt. Consts (Schreibzugriff) X+ Erweiterte Syntax L+ Lokale Debug-Symbole Y+ Symbolinformation M- Laufzeit-Typinfo (RTTI) Z1 Mindestgröße für Enum-Typen O+ Optimierung
Code:
Je nach Platform gibt es ja verschiedene compiler, also auch OSX...
Syntax: dcc64 [Optionen] Dateiname [Optionen]
-A<unit>=<alias> = Unit-Alias setzen -B = Alle Units erzeugen -CC = Ziel: Konsole -CG = Ziel: GUI -D<syms> = Bedingungen definieren -E<path> = EXE/DLL-Ausgabeverzeichnis -F<offset> = Fehlersuche -GD = Detaillierte Map-Datei -GP = Map-Datei mit publics -GS = Map-Datei mit Segmenten -H = Ausgabe von Hinweismeldungen -I<paths> = Include-Verzeichnisse -J = .obj-Dateien generieren -JPHNE = C++ .obj-Datei, .hpp-Datei, im Namespace erzeugen, alles exportieren -JL = Package-.lib, -.bpi und alle .hpp-Dateien für C++ erzeugen -K<addr> = Image-Basisadresse -LE<path> = Package .bpl-Ausgabeverzeichnis -LN<path> = Package .dcp-Ausgabeverzeichnis -LU<package> = Package verwenden -M = Modifizierte Units erzeugen -NU<Pfad> = Unit-DCU-Ausgabeverzeichnis -NH<path> = Unit .hpp-Ausgabeverzeichnis -NO<path> = Unit .obj-Ausgabeverzeichnis -NB<path> = Unit .bpi-Ausgabeverzeichnis -NX<Pfad> = Unit-XML-Ausgabeverzeichnis -NS<namespaces> = Namespace-Suchpfad -O<paths> = Objektverzeichnisse -P = Auch nach 8.3-Dateinamen suchen -Q = Ohne Meldung compilieren (Quiet) -R<paths> = Ressourcenverzeichnisse -TX<Erw.> = Erweiterung des Ausgabenamens -U<paths> = Unit-Verzeichnisse -V = Debug-Information in EXE -VR = Externe Fehlersuche gen. -VT = Debug-Informationen in TDS -VN = TDS-Symbole im Namespace -W[+|-|^][warn_id] = Ausgabe von Warnmeldungen -Z = Ausgabe nie zu erstellender DCPs -$<dir> = Compiler-Direktive --help = Diesen Hilfebildschirm anzeigen --version = Name und Version anzeigen --codepage:<cp> = Codierung für Quelltextdatei festlegen --default-namespace:<namespace> = Namespace setzen --depends = Unit-Abhängigkeitsinformationen ausgeben --doc = XML-Ausgabedokumentation --drc = Ausgabe-Ressourcenstring .drc-Datei --no-config = Standard-dcc64.cfg-Datei nicht laden --description:<String> = Beschreibung für ausführbare Datei festlegen --inline:{on|off|auto} = Inlining von Funktionen steuern --legacy-ifend = Alte $IFEND-Direktive zulassen --zero-based-strings[+|-] = Indizierung der Strings beginnt mit 0 --peflags:<Flags> = Zusätzliches Flags-Feld für PE-Header setzen --peoptflags:<Flags> = Zusätzliches Feld für optionale Flags für PE-Header setzen --peosversion:<Haupt>.<Neben> = BS-Versionsfelder in PE-Header setzen (Vorgabe: 5.0) --pesubsysversion:<Haupt>.<Neben> = Untersystem-Versionsfelder in PE-Header setzen (Vorgabe: 5.0) --peuserversion:<Haupt>.<Neben> = Benutzer-Versionsfelder in PE-Header setzen (Vorgabe: 0.0) --lib-version:<Version> = Version des Ausgabe-Package-Namens --lib-suffix:<Suffix> = Suffix des Ausgabe-Package-Namens Ich halte es für wichtig wahlweise den compiler direkt anzusprechen (und nicht MSBuild), da man dadurch Projekt unabhängig kompilieren kann. Also alles was man im Projekt (*.dproj) oder den Pfaden evtl. verstellt hat spielt keine Rolle, und man erhält wirklich das Ergebnis so, wie es im Projekt Manager hinterlegt ist. Auch funktioniert DCxx sehr zuverlässig. |
AW: Pascal Project Manager & Editor
Zitat:
twm |
AW: Pascal Project Manager & Editor
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Edit: Habe gerade eine aktualisierte Version hochgeladen (HP weist das aber nicht aus), wo die Compiler-Funktion als BETA integriert ist, sieht so aus wie in Anlage. Im Feld "Zusätzliche Parameter" kann man bei Bedarf weitere benötigte Parameter angeben (Muss man wohl, da ich derzeit noch nicht für den DCC-Compiler weiß, was ich da zwingend selber ermitteln müsste, damit es richtig läuft). Das compilieren mit dem MSBuild-Compiler scheint aber schon ganz gut zu funktionieren. |
AW: Pascal Project Manager & Editor
Und wenn z.B. "lange" Suchpfade mit rein sollen, dann besser der Weg über die CFG-Datei, also dort die "Parmerter" rein, denn all zu lang darf die Parameterliste des DCC nicht werden.
|
AW: Pascal Project Manager & Editor
Zitat:
Code:
msbuild.exe "Project.dproj" /target:Clean;Build /p:Platform=Win32 /p:config=Release
msbuild.exe "Project.dproj" /target:Clean;Build /p:Platform=Win64 /p:config=Release |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz