Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Packages kompilieren und Compilerversion automatisch in den Dateinamen (https://www.delphipraxis.net/203545-packages-kompilieren-und-compilerversion-automatisch-den-dateinamen.html)

himitsu 27. Feb 2020 13:47

Packages kompilieren und Compilerversion automatisch in den Dateinamen
 
Wie, bzw. geht es überhaupt?

Ein Package XYZ soll beim Compilieren die CompilerVersion im Dateinamen haben,
in den Requires abhängiger Packages soll dann ebenfalls nur der Name XYZ stehen, aber jeweils die CompilerVersion verwendet werden (das geht ja ... ich binde "vcl" ein und im XE wird "vcl150" genommen)
und ebenso für EXE und DLLs, die Version in den Dateinamen, aber ich fürchte dort muß beim DLL-Import der Name via IFDEFs zusammengebaut werden. :cry:




Bzw. geht das auch andersrum?
Also ich hab eine XYZ_XE.dpk/.dpr und .dproj und dann nochmal die XYZ.10.3.dpk und .dproj
und die werden immer als XYZ.bpl compiliert.

Das wäre mir lieber. (und notfalls kann ja das kranke WinSxS die Versionen verwalten :stupid:)
und im Quellcode der DPR und PAS paar {$IFs für die versionsabhängigen Codes.

Im Grunde brauch ich ja auch nur verschiedene DPROJ für die verschiedenen Delphis, wenn Borland/Emba das Format mal wieder komplett umgekramt hat
Für viele Delphis sind die DPROJ praktisch kompatibel und man bräuchte da eigentlich nur Eine für die Alle.

dummzeuch 27. Feb 2020 14:04

AW: Packages kompilieren und Compilerversion automatisch in den Dateinamen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von himitsu (Beitrag 1458535)
Ein Package XYZ soll beim Compilieren die CompilerVersion im Dateinamen haben,
in den Requires abhängiger Packages soll dann ebenfalls nur der Name XYZ stehen, aber jeweils die CompilerVersion verwendet werden (das geht ja ... ich binde "vcl" ein und im XE wird "vcl150" genommen)
und ebenso für EXE und DLLs, die Version in den Dateinamen, aber ich fürchte dort muß beim DLL-Import der Name via IFDEFs zusammengebaut werden. :cry:

Bzw. geht das auch andersrum?
Also ich hab eine XYZ_XE.dpk/.dpr und .dproj und dann nochmal die XYZ.10.3.dpk und .dproj
und die werden immer als XYZ.bpl compiliert.

Das wäre mir lieber. (und notfalls kann ja das kranke WinSxS die Versionen verwalten :stupid:)
und im Quellcode der DPR und PAS paar {$IFs für die versionsabhängigen Codes.

Im Grunde brauch ich ja auch nur verschiedene DPROJ für die verschiedenen Delphis, wenn Borland/Emba das Format mal wieder komplett umgekramt hat
Für viele Delphis sind die DPROJ praktisch kompatibel und man bräuchte da eigentlich nur Eine für die Alle.

meine Package-Namen sind immer generisch und ich habe, falls mehrere Delphi-Versionen unterstützt werden sollen, immer Unterverzeichnisse für die Packages:

Code:
mycomponent
--> src
--> packages
  --> Delphi2007
  --> DelphiXE5
  --> DelphiXx10.3
unter src liegen die eigentlichen Sourcen, die in allen Packages eingebunden werden. Unter Packages->DelphiXxxxx die Packages und meist noch eine Project-Group für die jeweilige Delphi-Version.

Ein Beispiel dafür findest Du in ccpack auf OSDN (auch wenn ich da kein zusätzliches Package-Unterverzeichnis habe sondern nur Unterverzeichnisse für die Packages jeder Delphi-Version).

Damit können die Package-Projekte immer denselben Namen haben. Der Suffix wird mittels der Einstellungen unter Project->Options->Description gesetzt. Und der nette Button, den ich mir mittels GExperts dort hineinbeame vereinfacht es, den Suffix passend zu setzen (siehe Screenshot im Anhang).

Für DLLs kann man ein Suffix ebenfalls konfigurieren, allerdings funktionierte das nicht mit allen Delphi-Versionen. Da gibt es das Feld unter Project->Options->Application.

Für Exectuables geht das nicht.

Stevie 27. Feb 2020 14:19

AW: Packages kompilieren und Compilerversion automatisch in den Dateinamen
 
Ich hab in mehreren meiner Projekte, die genau eine dpr und dproj haben, das hier in einer inc Datei, die in der dpr eingebunden ist:

Delphi-Quellcode:
{$IF CompilerVersion = 22}{$LIBSUFFIX '150'}
{$ELSEIF CompilerVersion = 23}{$LIBSUFFIX '160'}
{$ELSEIF CompilerVersion = 24}{$LIBSUFFIX '170'}
{$ELSEIF CompilerVersion = 25}{$LIBSUFFIX '180'}
{$ELSEIF CompilerVersion = 26}{$LIBSUFFIX '190'}
{$ELSEIF CompilerVersion = 27}{$LIBSUFFIX '200'}
{$ELSEIF CompilerVersion = 28}{$LIBSUFFIX '210'}
{$ELSEIF CompilerVersion = 29}{$LIBSUFFIX '220'}
{$ELSEIF CompilerVersion = 30}{$LIBSUFFIX '230'}
{$ELSEIF CompilerVersion = 31}{$LIBSUFFIX '240'}
{$ELSEIF CompilerVersion = 32}{$LIBSUFFIX '250'}
{$ELSEIF CompilerVersion = 33}{$LIBSUFFIX '260'}
{$ELSE}{$MESSAGE FATAL 'Version not supported'}{$IFEND}

himitsu 27. Feb 2020 15:04

AW: Packages kompilieren und Compilerversion automatisch in den Dateinamen
 
Ach stimmt, das {$LIBSUFFIX}, aber eine Automatik wie beim Importieren gibt es da nicht?


IDE-Name, IDE-Version, CompilerVersion, RtlVersion, VclVersion, ... :freak:

Mal ausprobieren was passiert wenn ich da den Namen als $LIBSUFFIX verwende, ob der Import über den Basisnamen dann auch noch geht. :stupid:




Hab vorhin gemerkt, dass man eine abc123.dproj auch auf eine gemeinsame abc.dpk gehen lassen kann (weiß nur noch nicht was passiert, wenn man die Projekt-Datei dann in der IDE speichert oder umbenennt)

Die Arbeit mit mehreren Delphi, bzw. bei Komponenten für Andere mit unterschiedlichen Delphis, da wäre es jedenfalls einfacher, wenn nur möglichst die .DPROJ für verschiedene IDEs da sein müsste und alle anderen Dateien gemeinsam genutzt werden können.

Uwe Raabe 27. Feb 2020 15:15

AW: Packages kompilieren und Compilerversion automatisch in den Dateinamen
 
Das LIBSUFFIX wird nur an den Namen der BPL angehängt. Die requires-Einträge beziehen sich aber auf die DCP.

Übrigens sorgt der Project Magician optional auch für das automatische Anpassen beim Öffnen des Package Projects:
Zitat:

Maintaining packages for different Delphi versions requires to use a decent LIBSUFFIX to distinguish the bpl-files for each version (see Delphi Library Guidelines). Creating the project files for a new Delphi version usually involves copying those from the previous version to a new folder and adjusting the LIBSUFFIX entries. The Auto LibSuffix option eliminates the last step.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 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