Units in Komponente OS abhängig

Rund um die LCL und andere Komponenten
Antworten
Mathias
Beiträge: 7039
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Units in Komponente OS abhängig

Beitrag von Mathias »

Ich habe eigene Komponenten, welche aus mehreren Units bestehen.
Jetzt gibt es aber einzelne Units, welche nur unter Linux laufen.
Wie macht man das am besten, das diese auch nur unter Linux zu Verfügung stehen.
Ich könnte direkt in der Units alles mit diesem hier einklammern.

Code: Alles auswählen

  {$ifdef linux}
  ....
Aber irgendwie ist das kaum die Ideallösung.

Und hier reinflicken wird auch nicht die Lösung sein, da diese automatisch generiert wird.

Code: Alles auswählen

{ This file was automatically created by Lazarus. Do not edit!
  This source is only used to compile and install the package.
 }

unit fp_glew_package;

{$warn 5023 off : no warning about unused units}
interface

uses
  fp_glew, LazarusPackageIntf;

implementation

procedure Register;
begin
end;

initialization
  RegisterPackage('fp_glew_package', @Register);
end.
Hat einer ein eleganten Lösungs-Vorschlag dafür ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6956
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: Units in Komponente OS abhängig

Beitrag von af0815 »

Meiner Erfahrung nach, geht es nicht elegant. Alles in einer Unit ausklammern, so das nur syntaktische richtige Rümpfe überbleiben. Wichtig ist, das die Syntax nicht gestört wird. Wenn nötig, kann man auch mit Dummy Stubs arbeiten.

Oder mit includes die dann entsprechen geladen werden. Meistens ein include fürs Interface und eines für die Implementierung.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Units in Komponente OS abhängig

Beitrag von Mathias »

Oder mit includes die dann entsprechen geladen werden. Meistens ein include fürs Interface und eines für die Implementierung.
Dies ist eine elegante Lösung, wen man aus mehrere C-Headern eine Pascal Bindung gemacht hat.
Meiner Erfahrung nach, geht es nicht elegant.
Mit den Standard Packages welche bei Lazarus dabei sind scheint es irgendwie zu gehen.

Die Units x und xlib, gehen nur bei Linux, das selbe in Grün für Windows, die Unit Windows geht nur dort.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PascalDragon
Beiträge: 990
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: Units in Komponente OS abhängig

Beitrag von PascalDragon »

Mathias hat geschrieben: Mo 22. Sep 2025, 19:21 Die Units x und xlib, gehen nur bei Linux, das selbe in Grün für Windows, die Unit Windows geht nur dort.
Weil eben im Buildsystem von FPC die einen Units nur für *nix-Plattformen und die andere nur für Windows-Plattformen gebaut werden. FPC findet dann auch nur die entsprechenden kompilierten Units.
FPC Compiler Entwickler

Antworten