Hallo,
ich bin neu in Lazarus und habe hier möglicherweise eine DAU-Frage zu den Projekteinstellungen betreffende die Pfade. Aber ich habe hierzu irgendwie nichts gefunden.
Beim Austesten (Kompilieren) eines Beispielprojekts (auf Ubuntu 20.04 mit Lazarus 2.0.12) habe ich eine Fehlermeldung erhalten, dass eine bestimmte Datei nicht erstellt werden kann. Nun, auf den ersten Blick schnell entdeckt, ein "\" mitten im Pfad, der auf einem Ubuntu nicht viel Sinn macht. Die Ursache war dann auch schnell gefunden, unter "Einstellung für Projekt|Compilereinstellungen" ist unter Unit-Ausgabeverzeichnis "lib\$(TargetCPU)-$(TargetOS)" eingetragen. Das kann man ändern, aber vor einem Kompilieren auf Windows muss man das dann erneut ändern. Ist das so Absicht, oder gibt es ähnlich wie im Code mit PathDelim hier eine Variable, die man hier anstelle des "\" bzw. "/" einsetzen kann und so sichergestellt ist, dass ich auf beiden Plattformen ohne Änderung an den (Standard-)Projekteinstellungen die jeweilige ausführbare Datei erstellen kann?
Projekteinstellungen - Pfade - plattformübergreifend
- kralle
- Lazarusforum e. V.
- Beiträge: 1196
- Registriert: Mi 17. Mär 2010, 14:50
- OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
- CPU-Target: 64Bit
- Wohnort: Bremerhaven
- Kontaktdaten:
Re: Projekteinstellungen - Pfade - plattformübergreifend
Moin und herzlich Willkommen.
Schaue Dir mal in der angehängten PDF, den Abschnitt zum Thema "Erstell-Modi" an.
Ist nicht mehr ganz aktuell, aber sollte Dir einiges erklären.
Gruß HEiko
Schaue Dir mal in der angehängten PDF, den Abschnitt zum Thema "Erstell-Modi" an.
Ist nicht mehr ganz aktuell, aber sollte Dir einiges erklären.
Gruß HEiko
- Dateianhänge
-
Lazarus XCompiling 1_9._0.pdf
- (838.24 KiB) 64-mal heruntergeladen
OS: Manjaro Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1
-
- Beiträge: 35
- Registriert: Sa 4. Dez 2021, 11:43
- OS, Lazarus, FPC: Windows 10 / Ubuntu 20.04 LTS (L 2.0.12 FPC 3.2.0)
- CPU-Target: 64Bit
Re: Projekteinstellungen - Pfade - plattformübergreifend
Ah, danke für die Anleitung. Jetzt komme ich langsam in die gewünschte Richtung.
Wenn ich das richtig verstehe, wird hier vorausgesetzt, dass das x-compling auf ein- und demselben Quellsystem stattfindet. Dann müssen in der Projektdatei neben dem jeweiligen Zielsystem auch die Pfade natürlich weiterhin in der Konvention des jeweiligen Quellsystems gesetzt werden. Die Beispielprojekte sind demnach vor dem Kompilieren jeweils bei Bedarf anzupassen.
Ich habe mir auf einem Windows 10 gleichfalls Lazarus 2.0.12 installiert, eigentlich mit dem Ziel, hier ohne jedwede Veränderung der Einstellungen einfach nur neu kompilieren und bei Bedarf auch debuggen zu können.
Hintergrund für mein Ansatz ist eine möglichst einfache Fehlersuche bei Problemen, die mit möglicherweise auf die jeweiligen Plattform basieren, so z.B. der Aufruf einer Windows-API bzw. das (ggfs. selbst erstellte) Pendant auf einem Linux-System. Oder die Nutzung einer Funktion aus einer externen Lib (.so bzw. .dll), usw.
Demnach müsste ich für diesen Fall in der Projektdatei nicht nur je Zielsystem die Einstell-Modi speichern, sondern zumindest je Quell- (und zeitgleich Ziel-)system. Na, das muss ich mir noch mal anschauen.
Wenn ich das richtig verstehe, wird hier vorausgesetzt, dass das x-compling auf ein- und demselben Quellsystem stattfindet. Dann müssen in der Projektdatei neben dem jeweiligen Zielsystem auch die Pfade natürlich weiterhin in der Konvention des jeweiligen Quellsystems gesetzt werden. Die Beispielprojekte sind demnach vor dem Kompilieren jeweils bei Bedarf anzupassen.
Ich habe mir auf einem Windows 10 gleichfalls Lazarus 2.0.12 installiert, eigentlich mit dem Ziel, hier ohne jedwede Veränderung der Einstellungen einfach nur neu kompilieren und bei Bedarf auch debuggen zu können.
Hintergrund für mein Ansatz ist eine möglichst einfache Fehlersuche bei Problemen, die mit möglicherweise auf die jeweiligen Plattform basieren, so z.B. der Aufruf einer Windows-API bzw. das (ggfs. selbst erstellte) Pendant auf einem Linux-System. Oder die Nutzung einer Funktion aus einer externen Lib (.so bzw. .dll), usw.
Demnach müsste ich für diesen Fall in der Projektdatei nicht nur je Zielsystem die Einstell-Modi speichern, sondern zumindest je Quell- (und zeitgleich Ziel-)system. Na, das muss ich mir noch mal anschauen.
- kralle
- Lazarusforum e. V.
- Beiträge: 1196
- Registriert: Mi 17. Mär 2010, 14:50
- OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
- CPU-Target: 64Bit
- Wohnort: Bremerhaven
- Kontaktdaten:
Re: Projekteinstellungen - Pfade - plattformübergreifend
Moin,
um im Quellcode systemunabhängig zu sein, gibt es Konstanten für den Pfadtrenner usw.
Ich selber habe damit aber noch nicht gearbeitet.
Laut "Lazarus - Arbeiten mit der IDE und Klassenbibliothek" Seite 301 und folgende gibt es die Konstanten:
- PathDelim
- DriveSeparator
- AllFilesMask
- LineEnding
und noch ein paar mehr um plattformunabhängig zu arbeiten.
Gruß Heiko
um im Quellcode systemunabhängig zu sein, gibt es Konstanten für den Pfadtrenner usw.
Ich selber habe damit aber noch nicht gearbeitet.
Laut "Lazarus - Arbeiten mit der IDE und Klassenbibliothek" Seite 301 und folgende gibt es die Konstanten:
- PathDelim
- DriveSeparator
- AllFilesMask
- LineEnding
und noch ein paar mehr um plattformunabhängig zu arbeiten.
Gruß Heiko
OS: Manjaro Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1
Re: Projekteinstellungen - Pfade - plattformübergreifend
Normalerweise werden die Pfadtrenner beim Öffnen eines Projektes angepasst - ich weiß aber nicht, ob das auch beim Cross-Compilieren und dem Ändern des Build-Mode passiert. Man ist auf der sicheren Seite, wenn man in der Konfiguration generell '/'-Pfadtrenner verwendet - Lazarus kommt damit unter Windows klar (aber unter Linux nicht mit dem '\').
-
- Beiträge: 2118
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Projekteinstellungen - Pfade - plattformübergreifend
Also nach meiner Erfahrung ist bisher eigentlich immer so gewesen das Lazarus das automatisch angepasst hat
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Projekteinstellungen - Pfade - plattformübergreifend
d'accordWarf hat geschrieben: Sa 4. Dez 2021, 14:40 Also nach meiner Erfahrung ist bisher eigentlich immer so gewesen das Lazarus das automatisch angepasst hat
Winni