Lazarus Programme auf MAC nicht nutzbar / erstellbar

Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Lazarus Programme auf MAC nicht nutzbar / erstellbar

Beitrag von corpsman »

Sorry für den Allgemeine nichtssagende Betreff, aber eigentlich hab ich auch kein Plan was ich hier mache :(

Zur Sache:

ich wurde gebeten meine Anwendung für MAC zu veröffentlichen, getreu dem Motto write once compile everywhere versuche ich das nun. Dazu habe ich mir in Virtualbox ein

uname -a
Darwin Corpsmans-iMac.local 18.2.0 Darwin Kernel Version 18.2.0: Thu Dec 20 20:46:53 PST 2018; root:xnu-4903.241.1~1/RELEASE_X86_64 x86_64


installiert. Darin habe ich gemäß der Anleitung von https://wiki.freepascal.org/Installing_ ... load_Xcode. Versucht Lazarus zu installieren.

1. Fehler beim Commando "xcode-select --install" schreibt der immer
xcode-select: error: command line tools are already installed, use "Software Update" to install updates


Keine Ahnung was der von mir will, also weiter.
FPC 3.0.4 gezogen installiert
FPC-SRC 3.0.4 gezogen installiert

Testprogramm Hello World geschrieben compiliert ausgeführt -> funktioniert

Dann lazarus-2.0.4-i686-macosx.dmg gezogen installiert, und Lazarus gestartet.

So weit so gut. ALso habe ich mein erstes Testprogramm erstellt
2 * TButton
1 * TEdit

Compiliert gestartet, "Upps Debugger, bla bla ". Ich will nicht debuggen also in die Konsole gewechselt und das binary von Hand gestartet.

Dann schreibt er folgendes:
./project1
TCarbonButton.SetFocus Error:SetkeyboardFocus failes with result -30585


Das Fenster erscheint zwar, aber ich kann die Buttons nicht klicken und schon gar nicht in dem TEdit einen Text eingeben.

Mit "X" kann ich das Programm aber beenden ohne das ein weiterer Fehler auftritt.

So weit bin ich in 2 Wochen gekommen, ist hier irgend ein MAC User der mir weiterhelfen kann, dass ich mein Programm "erzeugen" kann ?

Das Ziel ist es:
genau das gleiche wie ich das unter Windows auch schon mache. Alle Sourcen in ein Verzeichnis "Lazbuild -B project1.lpi" und das Binary dann zur Verfügung stellen.
=> Ich brauch keinen Debugger, und keine "Hübsche" IDE, es muss halt nur laufen.

Actuell ist Lazarus mit Carbon als widget Type eingestellt, habe auch schon versucht das um zu stellen, aber beim Neu Compilieren des Codes jammert er dann wieder rum das dieses XCode ding nicht funktioniert.

=> Ich denke daran liegt mein Problem, nur weis ich nicht wie ich es lösen kann.
--
Just try it

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

Re: Lazarus Programme auf MAC nicht nutzbar / erstellbar

Beitrag von Warf »

Mac OS halt.

Zu dem Problem mit dem Debugger, das ist bekannt, und soweit ich weiß gibts keine lösung dafür (Ich bekomm zwar den GDB zum laufen, für C und C++, etc. aber nicht für Lazarus). Zu dem Problem mit der Konsole, es klingt dumm, aber das ist halt so. Du musst die anwendung in einem .app Container starten. Den kannst du erstellen unter Projekteinstellungen -> Anwendungsbundle erstellen (oder so, war lang nichtmehr unterm mac mit Lazarus). Was aber "problemlos" geht ist einfach Lazarus ohne den Debugger zu verwenden (Einstellungen -> Debugger -> da kannst du den irgendwo austellen).

Wenn du kein Carbon verwenden willst gibt es praktisch 3 weitere Widgetsets (bzw. gab es zu dem zeitpunkt als ich zuletzt mit Laz was für MacOS gemacht hab, das ist auch schon mindestens 1-2 jahre her), Cocoa, GTK2 und QT4. Cocoa ist das aktuelle systemframework von MacOS welches mit 64 bit OSX kam. Wenn du also Cocoa verwenden willst musst du dein Programm für 64 bit Kompilieren. Cocoa ist teilweise unterstützt, aber es gibt noch ne ganze reihe an features die nicht gehen, z.B. der Fokus ist komplett kaputt (du kannst z.T. in Memos den text nicht richtig selektieren, etc.), außerdem sind nicht alle LCL komponenten verfügbar. Für eine Produktive Software die nicht trivial ist gilt die faustregel: Vergiss Cocoa.
GTK 2 funktioniert hingegen wunderbar, solang ein X11 server auf dem Mac läuft. Seit 10.6 oder so liefert Apple aber keinen XServer mehr auf MacOS mit und der muss nachinstalliert werden. Wenn der aber läuft sollte es kein Problem sein. Aber der Support von GTK2 (vom GTK Projekt selbst) endet wahrscheinlich mit dem Release von GTK 4 ende diesen jahres, wenn du die software also länger als ein paar monate benutzen willst ist das wohl auch keine option.
QT 4 funktioniert auch super, wenn dus eingerichtet bekommst, du benötigst dafür QT sowie die QT-Pascal Wrapper bibliothek (QT4Pas). Das letzte mal als ichs versucht habe zu benutzen hab ich knapp 2 tage zum einrichten gebraucht (Hab nicht den ganzen tag dran gearbeitet aber mit so 5-10 stunden kannst du schon rechnen). Wenn du also nicht jedem benutzer zutrauen kannst 5-10 stunden in das installieren deiner Software zu investieren ist das wohl auch vom Tisch.

Carbon selbst funktioniert ganz ok. Einen bug hast du ja schon selbst gefunden, ansonsten geht das meiste aber recht solide. Solang du mit 32 Bit software zufrieden bist bleib bei carbon. Was seit diesem Jahr neu ist ist fast vollständiger QT5 support. Da wäre es mal interresant zu sehen wie das aufm mac läuft. Du brauchst dafür lediglich die QT5 bibliotheken sowie die Pas4QT5 bibliothek (keine ahnung von der mac version davon, auf Linux gibts die auf jeden Fall, eventuell musst du dir sie selbst kompilieren)

Ich machs mittlerweile so, ich benutze Lazarus auf Mac OS gar nicht mehr (zumindest für GUI anwendungen, konsolenprogramme funktionieren super), und nehme lieber Swift. Das motto sollte lieber heißen: Write once, Compile anywhere, except on MacOS

Zu dem XCode Problem, du kannst auch einfach XCode installieren, das liefert XCode Select mit. Außerdem, VM's mit MacOS sind eh etwas zickig, daher kann das auch probleme machen

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Lazarus Programme auf MAC nicht nutzbar / erstellbar

Beitrag von corpsman »

Hallo Warf,

Danke für deine Hinweise.

Also das ausschalten des Debuggers hat schon mal viel gebracht, meine Demo Anwendung kann compiliert und gestartet werden. Wenn ich auf meine TButtons drücke dann sehe ich auch die Messagebox, und im Edit kann der Text editiert werden => Cool

Unter Project -> Project Options -> Application -> Create Applicationbundle kann ich klicken, dann kommt auch ne Erfolgsmeldung.

Wenn ich dann in der Konsole schreibe

Code: Alles auswählen

open -a projecct1


anstatt
./project1


wird meine Anwendung anstandslos gestartet und funktioniert *juhu*

Was das Widgetset angeht ist mir das eigentlich föllig wurscht.

Meine Anwendung nutzt:
TForm
TPanel
TScrollbox
TIpHTMLPanel
TUniqueInstance
TImageList
TEdit
TCombobox
TButton
TListbox
TStringgrid
TMemo
TOpenGLControl
Synapse mit OpenSSL
TSQLite3
TUTF8Process

=> Das Ziel ist es auf so wenig wie möglich zu verzichten und am besten mit 0 Aufwand eine MAC-Version zu bekommen (das 0 Aufwand Ziel habe ich schon um 2 Wochen überschritten *g* )

Zu dem XCode Problem, du kannst auch einfach XCode installieren, das liefert XCode Select mit. Außerdem, VM's mit MacOS sind eh etwas zickig, daher kann das auch probleme machen


Das habe ich nicht verstanden (ok verstanden schon), wie macht man das.
--
Just try it

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

Re: Lazarus Programme auf MAC nicht nutzbar / erstellbar

Beitrag von Warf »

Was das Widgetset angeht ist mir das eigentlich föllig wurscht.

Dann schau ob die Carbon variante funktioniert so wie du es dir vorstellst (wie gesagt manche sachen sind etwas seltsam), solange keine breaking bugs gibt würde ich bei Carbon bleiben. Ansonsten kannst du mal probieren auf 64 bit zu stellen und mit Cocoa zu kompilieren, wenn alle komponenten die du benutzt unterstützt werden (und es keine großen bugs gibt) kannst du auch cocoa verwenden, was "schöner" aussieht (schöner im sinne von es sieht aus wie der rest des systems und nicht wie ne anwendung die seit 2006 nicht mehr geupdated wurde)

Das habe ich nicht verstanden (ok verstanden schon), wie macht man das.

Keine ahnung wie man auf ner VM XCode installiert, normalerweise würde ich sagen über den App-Store, allerdings weiß ich nicht ob du da was installieren kannst ohne auf nem echten mac zu sein.

Noch einen Tipp zu OSX:
Lazarus erzeugt dir das .app Bundle, das ist in OSX einfach ein ordner mit der dateiendung .app, die vom OS separat behandelt wird. Über Rechtsklick->Paketinhalt anzeigen kommst du im Finder in diesen Ordner. Normalierweise steckt da die Exec drin, sowie alle Bibliotheken die verewndet werden und alle Resourcen (Daher muss man unter OSX auch nix installieren, da praktisch alles in dem Paket drin steckt). Lazarus steckt da zur entwicklungszeit allerdings nur einen Symlink auf die exec (im selben ordner wie das Bundle) rein. Wenn du die software also weitergeben willst musst du in den Container gehen, den Symlink löschen und stattdessen die echte Exec reinkopieren. Dann kannst du das .App Bundle einfach weitergeben mit der typischen Mac OS "Drag & Drop to Applications to Install" methode

Antworten