[Erledigt] Unit Output Directory OS übergreifend
-
- Beiträge: 843
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
[Erledigt] Unit Output Directory OS übergreifend
Hi
Um die kompilierten Units aus dem Weg zu schaffen und zu strukturieren hab ich sie mittels "Unit Output Directory" in ein Verzeichnis gepackt.
Als Wert funktioniert für mich
C:\Laz_Lib\<Projektname>\$(TargetCPU)-$(TargetOS)-$(LazVer)
perfekt.
Nun wurde ich mit meinem Datenmodul-Projekt gerügt dass dieser Pfad nur Windows-kompatibel ist und so nicht auf anderen Betriebssystemen funktioniert.
Brauchte ich bisher nicht, aber dem stimme ich schon zu.
Nur habe ich keine allgemeingültige Formulierung gefunden die zb den Pfad ins jeweilige HOME Verzeichnis legt. Oder gibt es noch bessere Varianten? Vielleicht eine Variable die man wie die bereits benutzten einfügen kann? $(HOME) klappt zb nicht
Sicher weiß jemand von euch mehr -- Bitte um einen kleinen Denkanstoß, denn besonders bei Linux bin ich ziemlich blank.
Um die kompilierten Units aus dem Weg zu schaffen und zu strukturieren hab ich sie mittels "Unit Output Directory" in ein Verzeichnis gepackt.
Als Wert funktioniert für mich
C:\Laz_Lib\<Projektname>\$(TargetCPU)-$(TargetOS)-$(LazVer)
perfekt.
Nun wurde ich mit meinem Datenmodul-Projekt gerügt dass dieser Pfad nur Windows-kompatibel ist und so nicht auf anderen Betriebssystemen funktioniert.
Brauchte ich bisher nicht, aber dem stimme ich schon zu.
Nur habe ich keine allgemeingültige Formulierung gefunden die zb den Pfad ins jeweilige HOME Verzeichnis legt. Oder gibt es noch bessere Varianten? Vielleicht eine Variable die man wie die bereits benutzten einfügen kann? $(HOME) klappt zb nicht
Sicher weiß jemand von euch mehr -- Bitte um einen kleinen Denkanstoß, denn besonders bei Linux bin ich ziemlich blank.
Zuletzt geändert von charlytango am So 18. Dez 2022, 10:02, insgesamt 1-mal geändert.
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Unit Output Directory OS übergreifend
Normalerweise ist der Pfad relativ zur Projektdatei zu betrachten. Das "C:\Laz_Lib\"ist das Problem. Gib bei den Pfaden einmal "./$(TargetCPU)-$(TargetOS)-$(LazVer)/NamedesProjekts" ein, damit wird ein Pfad angelegt, dir deinen Spezifikationen entspricht. Man unterscheidet normalerweise nicht in Lazarusversion, ausser du hast einen Grund dafür. Gnerell gibt man in Lazarus nur relative Pfade zum Projekt an. Das geht auch nach oben mit "..". Das ist kein Problem. Auch ob man den Slash oder den Backslash verwendet, ist kein Problem, Lazarus kümmert sich darum.
Bei meinen Projekten, die im GIT liegen ist es egal, auf welchen System die ausgechecked werden. Kompiliert wir überall ohne Änderungen. Auch wo das Projekt ausgechecked wird ist durch die relative Angabe der Pfade komplett egal. Ob das jetzt in Linux oder auch Windows auf einer D: Platte liegt ist dadurch nicht relvant.
Bei meinen Projekten, die im GIT liegen ist es egal, auf welchen System die ausgechecked werden. Kompiliert wir überall ohne Änderungen. Auch wo das Projekt ausgechecked wird ist durch die relative Angabe der Pfade komplett egal. Ob das jetzt in Linux oder auch Windows auf einer D: Platte liegt ist dadurch nicht relvant.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 843
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Unit Output Directory OS übergreifend
Schon klar. Aber dann hab ich immer noch ein Verzeichnis im Applikationsverzeichnis.
Ich wollte die Units schon relativ zum AppDir unterbringen, aber irgendwie weiter weg.
Ist nicht ganz das was ich suche
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Unit Output Directory OS übergreifend
dann gehe mit "../../" oder ähnlich im Verzeichnis hoch und dann dorthin wo du willst. Sinnvoll ist es aber nur dann wenn du eine geplante Struktur hast die auf allen Plattformen gleich abgebildet werden kann. Das geht halt nur über relative Pfadangaben.charlytango hat geschrieben: ↑Sa 17. Dez 2022, 21:49Ich wollte die Units schon relativ zum AppDir unterbringen, aber irgendwie weiter weg.
Ist nicht ganz das was ich suche
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 843
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Unit Output Directory OS übergreifend
Danke. Dessen bin ich mir bewusst dass ich mit ../ relativ "hochsteigen" kann.
Und sinnvoll ist das eben nur wie du meintest wenn man die Struktur auf allen Plattformen abbilden kann. Und da ich aber nicht kontrollieren kann in welches Verzeichnis jemand auf einer beliebigen Plattform den Source reinkopiert wäre das eher eine schlechte Option.
Deswegen hab ich halt gehofft, ich hätte irgend eine Variable übersehen die aufs Home-Verzeichnis des angemeldeten Benutzers zeigt, denn das wäre wohl auf allen Plattformen ein sicherer Hafen für so ein Unit-Verzeichnis.
Schade, aber danke für die Mühe
Und sinnvoll ist das eben nur wie du meintest wenn man die Struktur auf allen Plattformen abbilden kann. Und da ich aber nicht kontrollieren kann in welches Verzeichnis jemand auf einer beliebigen Plattform den Source reinkopiert wäre das eher eine schlechte Option.
Deswegen hab ich halt gehofft, ich hätte irgend eine Variable übersehen die aufs Home-Verzeichnis des angemeldeten Benutzers zeigt, denn das wäre wohl auf allen Plattformen ein sicherer Hafen für so ein Unit-Verzeichnis.
Schade, aber danke für die Mühe
Re: Unit Output Directory OS übergreifend
Ich habe gerade ausprobiert, dass man das Macro $(HOME) im Unit- und Projekt-Ausgabeverzeichnis verwenden kann.
- Dateianhänge
-
- lazlib.png (7.47 KiB) 803 mal betrachtet
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Unit Output Directory OS übergreifend
Wenn mir einer in mein Home Verzeichnis reinpfuscht ist er draussen. Das ist für mich ein ABSOLUTER NO GO.
Die Programmierungen sind mit voller Absicht bei mir strikt getrennt vom Home Verzeichnis und liegen bei Windows sogar auf einer anderen Platte. Unter Linux liegt das eventuell unter /opt/lazdev/bin (oder so ähnlich) was hat eine Komponente oder Programm also in meinem Home verloren ? Ausser für die Einstellungen die laut den Spezifikationen des BS sowieso in eigenen Bereichen zu liegen haben. Vor allen was soll ein Unit Output Directory ausserhalb der Komponente bringen ?! Das erschliesst sich mir einmal nicht. Wenn ich eine Suite an Komponenten habe, dann kann ich ja für die Suite ein gemeinsames Verzeichnis definieren innerhalb der Suite. Das ist aber immer relativ erreichbar. Und wenn ich die Komponente lösche ist es gut und alles gelöscht und nicht irgendwelche Leichen in irgendwelchen Verzeichnissen, bei denen ich nicht gerechnet habe, das es sie gibt.
Da bin ich ein wenig radikal Aber ich hasse Systeme mit querverteilten Schrott, nur weil die Leute nicht verstanden haben, wie das vom System her vorgesehen ist und das jedes BS und auch BS Version seine Eigenheiten hat. Im fpc/Lazarus gibt es genügend Bibliotheken, die einem helfen die richtigen Pfade zu finden und zwar vom BS unabhängig.
Versucht einmal auf 100 Rechnern eine Software als User sauber unter Windows zu installieren, so das diese ohne Hacks wie beschreibbares Programmverzeichnis funktionieren. Wenn ihr sowas mal beruflich machen durfte und euch mit dem Auseinandergesetzt habt, so werdet ihr das verstehen. Nur Test wie man das installiert oder Installer für die Software machen die wenigsten. Reinkopieren in Programmeverzeichnis, Hinweise des BS wegklicken und dann noch schnell die Berechtigungen auf Administrator ändern, damit man das BS aushebelt geht ja eh schnell. Nachdenken warum das so ist auch nicht. Nur mach das in einer Firma mit zentraler Softwareverwaltung und sinnvollen Vorgaben bei der Security.
BTW: Ist nicht persönlich gemeint, sondern Allgemein
Die Programmierungen sind mit voller Absicht bei mir strikt getrennt vom Home Verzeichnis und liegen bei Windows sogar auf einer anderen Platte. Unter Linux liegt das eventuell unter /opt/lazdev/bin (oder so ähnlich) was hat eine Komponente oder Programm also in meinem Home verloren ? Ausser für die Einstellungen die laut den Spezifikationen des BS sowieso in eigenen Bereichen zu liegen haben. Vor allen was soll ein Unit Output Directory ausserhalb der Komponente bringen ?! Das erschliesst sich mir einmal nicht. Wenn ich eine Suite an Komponenten habe, dann kann ich ja für die Suite ein gemeinsames Verzeichnis definieren innerhalb der Suite. Das ist aber immer relativ erreichbar. Und wenn ich die Komponente lösche ist es gut und alles gelöscht und nicht irgendwelche Leichen in irgendwelchen Verzeichnissen, bei denen ich nicht gerechnet habe, das es sie gibt.
Da bin ich ein wenig radikal Aber ich hasse Systeme mit querverteilten Schrott, nur weil die Leute nicht verstanden haben, wie das vom System her vorgesehen ist und das jedes BS und auch BS Version seine Eigenheiten hat. Im fpc/Lazarus gibt es genügend Bibliotheken, die einem helfen die richtigen Pfade zu finden und zwar vom BS unabhängig.
Versucht einmal auf 100 Rechnern eine Software als User sauber unter Windows zu installieren, so das diese ohne Hacks wie beschreibbares Programmverzeichnis funktionieren. Wenn ihr sowas mal beruflich machen durfte und euch mit dem Auseinandergesetzt habt, so werdet ihr das verstehen. Nur Test wie man das installiert oder Installer für die Software machen die wenigsten. Reinkopieren in Programmeverzeichnis, Hinweise des BS wegklicken und dann noch schnell die Berechtigungen auf Administrator ändern, damit man das BS aushebelt geht ja eh schnell. Nachdenken warum das so ist auch nicht. Nur mach das in einer Firma mit zentraler Softwareverwaltung und sinnvollen Vorgaben bei der Security.
BTW: Ist nicht persönlich gemeint, sondern Allgemein
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 843
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Unit Output Directory OS übergreifend
Auch wenn ich erwiesenermaßen einen schnellen Wolf habe und oft nicht merke dass der schon aus dem Gatter raus ist und am Gegenüber hängt (also zu schnellen und heftigen Reaktionen neige) nehme ich solche Sachen gar nicht persönlich.
Womit ich nie Probleme hatte war Kompetenz, also Menschen die wissen warum sie was tun. Deswegen frage ich ja hier.
Zwangsläufig outet man sich als unwissend oder blamiert sich. Was solls.
Ich habe hier im Forum wesentlich mehr und aus der Praxis gelernt als woanders -- danke dafür an alle die dazu beigetragen haben.
-
- Beiträge: 843
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Unit Output Directory OS übergreifend
Nun zurück zum Thema.
Offensichtlich ist es möglich das HOME Verzeichnis als Unit Output zu verwenden (siehe wp_xyz) aber sehr gescheit scheint es nicht zu sein (siehe af0815)
hmm... dann für das Projekt eben ins Programmverzeichnis
THX
Offensichtlich ist es möglich das HOME Verzeichnis als Unit Output zu verwenden (siehe wp_xyz) aber sehr gescheit scheint es nicht zu sein (siehe af0815)
hmm... dann für das Projekt eben ins Programmverzeichnis
THX
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1435
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: [Erledigt] Unit Output Directory OS übergreifend
Standardmäßig gibt Lazarus das ja alles unter ./lib aus. Das erscheint mir durchaus auch sinnvoll da bak/ und lib/ sowieso in jeder .gitignore stehen.
Wozu willst du ein Verzeichnis außerhalb dafür verwenden?
Wozu willst du ein Verzeichnis außerhalb dafür verwenden?
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: [Erledigt] Unit Output Directory OS übergreifend
ALs Beispiele kann man sich die Struktur von Lazarus selbst nehmen. Da ist das Projekt tiefer, die Exe's im Hauptpfad und der unit output gesammelt unter unit. Für das Hauptprojekt gesehen. Das ist ein schönes Beispiel (nicht das einzige) wie man ein riesen Projekt strukturieren kann. Man darf nicht vergessen, Es ist nicht die IDE alleine, die dort hineinkompiliert wird, sondern Lazarus beinhaltet viele zusätzliche Teile.
Damit kann ich aber ein reltiv schnellen Clean Prozess von dem grundlegenden System machen, indem ich das units Verzeichnis lösche und so Lazarus zwinge es beim nächsten kompilieren es wieder neu aufzubauen. Hat so seine Vorteile.
Damit kann ich aber ein reltiv schnellen Clean Prozess von dem grundlegenden System machen, indem ich das units Verzeichnis lösche und so Lazarus zwinge es beim nächsten kompilieren es wieder neu aufzubauen. Hat so seine Vorteile.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: [Erledigt] Unit Output Directory OS übergreifend
Wenn ich mich an den anderen Thread richtig erinnere, versuchst du hier mit Hilfe eines Datenmoduls diverse allgemeine Funktionalitäten zu Beispiel-Datenbanken zur Verfügung zu stellen. Warum machst du daraus nicht ein Package? Packages sind die Antwort von Lazarus auf das Pfad-Chaos bei Delphi... Wenn jemand das verwenden will, muss er das entsprechende Package in die Anforderungen seines Projektes übernehmen, und schon kümmert sich die IDE darum, dass alles gefunden wird. Mache nur ein Laufzeit-Package, dann must du auch nichts installieren. Wenn du auf eine andere IDE umziehst (anderer Rechner, anderes BS, andere Version), dann musst du das Package nur einmal in der IDE öffnen, damit die IDE für die Zukunft davon weiß.
-
- Beiträge: 843
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
-
- Beiträge: 843
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: [Erledigt] Unit Output Directory OS übergreifend
weil ich mich um GIT rumdrücke wo es geht, ich verwende SVN und vermutlich kann man das auch dort einstellen dass bak/ und lib/ unberücksichtigt bleibenfliegermichl hat geschrieben: ↑So 18. Dez 2022, 10:07Standardmäßig gibt Lazarus das ja alles unter ./lib aus. Das erscheint mir durchaus auch sinnvoll da bak/ und lib/ sowieso in jeder .gitignore stehen.
Wozu willst du ein Verzeichnis außerhalb dafür verwenden?
Die Diskussion darüber zwingt mich gerade das eben neu zu überdenken.
Danke Jungs
-
- Beiträge: 830
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: [Erledigt] Unit Output Directory OS übergreifend
Falls du TortoiseSVN verwendest: Rechtsklick auf das bak/ oder lib/ Verzeichnis und dann im TortoiseSVN Menü auf Add to ignore list. Den recursive Eintrag brauchst du nur nutzen, wenn du das im obersten Level deines Checkout machst.charlytango hat geschrieben: ↑So 18. Dez 2022, 11:23weil ich mich um GIT rumdrücke wo es geht, ich verwende SVN und vermutlich kann man das auch dort einstellen dass bak/ und lib/ unberücksichtigt bleibenfliegermichl hat geschrieben: ↑So 18. Dez 2022, 10:07Standardmäßig gibt Lazarus das ja alles unter ./lib aus. Das erscheint mir durchaus auch sinnvoll da bak/ und lib/ sowieso in jeder .gitignore stehen.
Wozu willst du ein Verzeichnis außerhalb dafür verwenden?
FPC Compiler Entwickler