Erstellung der EXE Datei unterdrücken

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Lorca
Beiträge: 147
Registriert: Di 3. Nov 2020, 12:25

Erstellung der EXE Datei unterdrücken

Beitrag von Lorca »

Hi zusammen,

Jedesmal nach dem Compilieren wird im Arbeitsverzeichnis eine EXE Datei erzeugt.
Schöner währe es, wenn diese nur im TEMPDIR erstellt würde und erst auf mein Wunsch hin im Arbeitsordner abgelegt werden.

Der Hintergrund ist: wenn ich meine Sourcen sichern will habe ich auch immer alle EXE Dateien dabei. Und das ist Platzverschwendung.
Denn ich will ja NUR die Sourcen sichern.

Gibt es die Möglichkeit dem Compiler mit zuteilen wohin er die EXE Datei stellen soll?

Wie sichert Ihr eure Quellcodes?

Gruß
Lorca

Ich934
Lazarusforum e. V.
Beiträge: 296
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 2.0.X, FPC 3.2.0)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: Erstellung der EXE Datei unterdrücken

Beitrag von Ich934 »

Ja. In den Projekteinstellungen kannst du das Ausgabeverzeichnis angeben. Das kannst du den Pfad anpassen.

Ich nutze Git. Da ist das Binärverzeichnis ausgeschlossen und das Problem existiert nicht...
Tipp für PostgreSQL: www.pg-forum.de


Mathias
Beiträge: 5453
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erstellung der EXE Datei unterdrücken

Beitrag von Mathias »

Ich934 hat geschrieben:
Sa 24. Sep 2022, 09:49
Ja. In den Projekteinstellungen kannst du das Ausgabeverzeichnis angeben. Das kannst du den Pfad anpassen.

Ich nutze Git. Da ist das Binärverzeichnis ausgeschlossen und das Problem existiert nicht...
Vorausgesetzt, man gibt dies in ".gitignore" an.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Socke
Lazarusforum e. V.
Beiträge: 3098
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Erstellung der EXE Datei unterdrücken

Beitrag von Socke »

Mathias hat geschrieben:
Sa 24. Sep 2022, 17:25
Vorausgesetzt, man gibt dies in ".gitignore" an.
Das gibt es schon fertig: https://github.com/github/gitignore/blo ... .gitignore
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Mathias
Beiträge: 5453
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Erstellung der EXE Datei unterdrücken

Beitrag von Mathias »

Da hätte ich auch noch eine Frage dazu.

Bei Windows kann man gut die Bin ausblenden, in dem man *.exe verwendet.
Gibt es für Linux auch eine Möglichkeit, da es für die Bin dort keine Extension gibt.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5739
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: Erstellung der EXE Datei unterdrücken

Beitrag von af0815 »

Mathias hat geschrieben:
Mo 26. Sep 2022, 17:41
Da hätte ich auch noch eine Frage dazu.

Bei Windows kann man gut die Bin ausblenden, in dem man *.exe verwendet.
Gibt es für Linux auch eine Möglichkeit, da es für die Bin dort keine Extension gibt.
Ich lege die ausführbaren Dateien immer in ein eigens Verzeichnis, das wird dann ausgeschlossen. Damit ist es egal was dort liegt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Warf
Beiträge: 1727
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Erstellung der EXE Datei unterdrücken

Beitrag von Warf »

Etwas was m.E. nach eh viel zu wenig gemacht wird, wahrscheinlich weil viele es einfach nicht wissen, ist eine ordentliche Projektstrukturierung. Das erste was ich mache wenn ich ein ernsthaftes Projekt starte ist das Folgende: Projekteinstellungen -> Pfade. Dann ganz oben ist so eine Dropdown Box "Erstellmodi" mit Default. Da auf den Button neben dran mit [...] klicken und dann öffnet sich der Erstellmodus Dialog. Dieser hat ganz oben links einen Button "Create Debug and Release modes". Dort einmal draufklicken, dann erscheinen 2 neue Einträge in der liste "Debug" und Release. Den alten "Default" kann man jetzt löschen (klick auf "-" button). Dann mit OK den Dialog schließen.
Als nächstes müssen die Pfade bei den beiden Modi noch angepasst werden damit die executables in einem entsprechenden unterordner landen. $(TargetCPU) und $(TargetOS) benutzen um mehrplattformanwendungen zu erlauben. Beispiel: "bin/Debug/$(TargetCPU)-$(TargetOS)/ProgramName" für debug (oben Dropdown menü auf Debug stellen dann den Pfad "Ziel-Dateiname" setzen), und "bin/Release/$(TargetCPU)-$(TargetOS)/ProgramName" für release (selbes feld nur vorher oben das Dropdown Menü einmal auf Release stellen).
Als nächstes in den Eintstellungen "Benutzerdefinierte Einstellungen" den Button "Definitionen" drücken, und die definition "DEBUG" für den Modus Debug (oben über Dropdown einstellen vor dem drücken des "Definitionen" Buttons) und "RELEASE" für den Modus Release hinzufügen und über die Checkbox aktivieren.
Zum schluss noch oben das Dropdown auf "Debug" stellen, da das der Modus ist in dem du hauptsächlich arbeiten wirst, und mit OK die Einstellungen beenden.

Wenn du jetzt dein programm debuggst, werden alle ausführbaren dateien in dem Unterordner bin/Debug/Architektur gespeichert (z.b. bei meinem Test program "Desktop\test\bin\Debug\x86_64-win64\testprogram.exe"). Wenn du jetzt fertig mit Debuggen bist und eine Version veröffentlichen willst, gehst du auf "Start->Viele Modi Kompilieren" wählst Release aus und klickst Ok. Jetzt ist im Ordner "bin\Release\x86_64-win64" das Kompilierte Programm, mit Optimierungen und ohne Debugger Symbole. Das beste, wenn du weiterhin debuggen willst (also in Lazarus über den grünen Pfeil), dann kannst du das, aber weil Release und Debug in verschiedenen verzeichnissen liegen, werden die dateien nicht überschrieben. Du kannst also teständerungen machen, und hast aber immer noch deine Release Version rumliegen.

Wenn du Debug code machen möchtest der nur im Debug bild vorkommt kannst du die Defines benutzen:

Code: Alles auswählen

{$IfDef DEBUG}
WriteLn('Compiled as Debug');
{$EndIf}
{$IfDef RELEASE}
WriteLn('Compiled as Release');
{$EndIf}
Zu guter letzt noch um den Source Code zu speichern benutze ich Git, mit der Lazarus Gitignore von Github (https://github.com/github/gitignore/blo ... .gitignore), plus noch das bin Verzeichnis in welchem die Programme liegen:

Code: Alles auswählen

# Program output directory
bin/

# Lazarus Gitignore from https://github.com/github/gitignore/blob/main/Global/Lazarus.gitignore
# Lazarus compiler-generated binaries (safe to delete)
*.exe
*.dll
*.so
*.dylib
*.lrs
*.res
*.compiled
*.dbg
*.ppu
*.o
*.or
*.a

# Lazarus autogenerated files (duplicated info)
*.rst
*.rsj
*.lrt

# Lazarus local files (user-specific info)
*.lps

# Lazarus backups and unit output folders.
# These can be changed by user in Lazarus/project options.
backup/
*.bak
lib/

# Application bundle for Mac OS
*.app/
Das ist natürlich etwas Aufwand (und ich verstehe nicht warum das nicht einfach so Standardeinstellung ist, jede andere IDE benutzt solche Konfiguration von Haus aus) und man muss sich halt immer am anfang einmal die 5 minuten nehmen das so einzurichten, allerdings lohnt es sich. Wenn man für verschiedene Architekturen Kompiliert kann man einfac verschiedene Release Modi bauen und die liegen dann in eigenen verzeichnissen, man muss bibliotheken (dlls) nicht im arbeitsverzeichnis rumliegen lassen sondern kann die direkt in den bin ordner werfen, und es macht die verwendung von CI/CD sehr einfach.
Ein paar mehr infos dazu, grade wie man sein Projekt setuped damit man es mit CI/CD automatisiert testen und deployen hatte ich mal hier zusammengeschrieben (mit Beispiel Projekt) (allerdings auf englisch): Link

Lorca
Beiträge: 147
Registriert: Di 3. Nov 2020, 12:25

Re: Erstellung der EXE Datei unterdrücken

Beitrag von Lorca »

Hallo zusammen,

ganz herzlichen Dank für eure Antworten. :)
Das war echt cool. *freu*

Und ganz besonderen Dank an Warf, für seine sehr ausführliche Beschreibung.
Auch ich lege mir zu jedem ernsthaften Projekt eine Projektstruktur an.
Ich Denke jetzt kann ich bei der Sicherung das Problem mit der EXE Datei vergessen :D

Derzeit nutze ich wegen dem EXE Problem immer zwei Projektordner. Der eine für die EXE der andere für die Quellcodes.
Das ist auf Dauer echt nervig.

Also Danke schön.


Gruß
Lorca

Antworten