tryunderror hat geschrieben:Und wie ist es mit Apple oder Android oder DOS zb Freedos?
Apple MacOS: Da muss man erst mal ein bisschen was über Mac OSX wissen. Früher war Mac OSX noch ein 32 Bit betriebsystem, mit Carbon als Framework und SystemAPI (ist bei Apple beides in einem), mit 64 bit kam dann Cocoa. Für beides gibts ein Widgetset in Lazarus, allerdings scheint es unter den Lazarus entwicklern nur wenige MacOS nutzer zu geben, sodass Carbon zwar zum größten Teil unterstützt wird, Cocoa aber praktisch immernoch recht in den Kinderschuhen steckt (d.h. nur ein Bruchteil der LCL komponenten werden unterstützt). Wenn du nur simple Komponenten (Button, Edits, etc.) brauchst reicht Cocoa sogar aus, aber selbst da ist nicht alles an Funktionalität bereitgestellt (ich glaub fokus ist z.B. noch fast nicht vorhanden). Wenn du Carbon benutzt kannst du aber keine 64 bit anwendungen schreiben sitzt auf 32 bit fest. Und Carbon funktioniert zwar, ist aber zum einen nicht schön (es ist halt nicht im grafischen stil moderner OSX versionen, sondern sieht immernoch aus wie MacOSX 10.4 oder so), und hat auch ne ganze Menge probleme.
Größere Projekte Porte ich schon lang nicht mehr auf OSX, da es einfach zu viel aufwand ist die ganzen eigenheiten von Carbon zu bedenken, und Cocoa für nicht triviale programme einfach nicht zu benutzen ist. Lange zeit war die einzige Option um vernünftig alle Features zu verwenden entweder GTK2 oder QT 4 zu verwenden, das ist aber auch ein riesen Problem (GTK2 benötigt einen X-Server den Apple seit 10.6 oder so nicht mehr selbst mitliefert, und separat installiert werden muss), und um QT4 auf meinem Mac zum laufen zu bekommen hab ich locker mal 3 Tage gebraucht gehabt. Noch dazu hast du da das selbe Problem das die anwendungen einfach aussehen als wären sie frisch aus den 90ern genommen worden (Grade GTK2 sieht auf OSX echt beschissen aus, QT4 ähnelt sehr an Carbon). Allerdings hast du dabei den vollen funktionsumfang der LCL (Besser als Carbon oder Cocoa) sowohl für 32 als auch 64 bit anwendungen. Mittlerweile unterstützt Lazarus aber QT5. Da ichs mittlerweile aufgegeben hab mit Lazarus für Mac zu Programmieren hab ichs noch nicht ausprobiert, könnte aber eventuell eine Lösung für das MacOS dilemma sein (da es ein aktuelles Framework ist, mit aktuellem design, und großem Funkitionsumfang).
Aber grundsätzlich ist mein Rat, Lazaurs und Mac OSX ist eher nichts was du freiwillig machen willst.
IPhone ist da wieder eine andere geschichte, denn es gibt tatsächlich einen Crosscompiler auf IOS für den FPC. Aber soweit ich weiß ist die Lazarus unterstütztung 0. Du müsstest also vom Scratch mit den SystemAPI's arbeiten (Stichwort PasCocoa). Das kann funktionieren, z.B. wenn deine App nur auf OpenGL basis läuft kannst du sie wahrscheinlich recht simpel porten, aber IOS spezifische API funktionen musst du halt alle selbst benutzen.
Übrigens braucht man einen Mac um für IPhone entwickeln zu können (der maximal 6 jahre alt sein darf, sich also einfach nen alten 2010er imac holen is also nicht, du musst schon mindestens nen 2014er haben, und die kosten auch gebraucht noch ein paar hundert euronen), weshalb iphone wahrscheinlich eh erst mal flach fällt (Mac OSX VM's sind ein absoluter krampf, und ich könnte mir sogar vorstellen das das auch nicht so trivial geht, da apple aktiv versucht dir da steine in den weg zu legen)
Android ist auch wieder ne eigene geschichte. Da gibt es zwei ansätze, der eine ist die Idee die LCL auf Android zu porten mit hilfe des Custon Drawn Widgetsets, wie weit da der Status ist weiß ich nicht, als ichs das letzte mal probiert hab wars noch unbenutzbar.
Das andere ist LAMW. Ein absoluter Clusterfuck von einer Toolchain, funktioniert aber erstaunlich gut (immernoch besser als googles android studio

). Die Idee ist du schreibst eine Native Pascal anwendung, welche dann Java klassen über die JNI Bridge aufruft, welche dann mit einem Java frontend reden. Natürlich muss jede Komponente dann einmal für das Frontend in Java und für das Backend in Pascal implementiert werden, was den aufwand recht groß macht, und daher sind erst einige grundkomponenten implementiert. Außerdem versucht es gar nicht erst die ganze LCL (als widgetset) zu porten, sondern konzentriert sich auf Android spezifische Komponenten. Crosskompatibilität kannst du also komplett vergessen.
Das hauptproblem ist vor allem das Google Android nicht für Crosskompatibilität auslegt. Die offizielle entwicklertoolchain ist kompletter Müll, und die beste Möglichkeit ne mobile app zu entwickeln hast du mit Microsofts Xamarin (+ mono) oder mit Apache Cordova oder ähnlichem (was auf Webtechnologie aufbaut). Das beste ist, viele hersteller bringen keine regelmäßigen Android updates raus, d.h. es kann sein das du deine App eh 3 mal schreiben musst, einmal für das neuste Android, dann für die zwei vorrigen versionen, damit du ne halbwegs gute coverage hast. Deshalb ist es mMn komplett bescheuert direkt auf Android zu entwickeln, und die nutzung eines Zwischenframeworks wie Cordova oder Xamarin ist da praktisch die einzige möglichkeit dabei nicht vollends den verstand zu verlieren.
Was mal interresant wäre, wäre zu schauen wie man mit Cordova und Pas2JS Mobile Apps entwickeln könnte, denn mit webtechnologie Mobile apps zu entwickeln ist äußerst angenehm (Für die 2-3 Apps die ich schon mal geschrieben hab auf jeden fall recht simpel gewesen). Ansonsten muss ich wohl leider sagen das Mobile entwicklung mit Lazarus nicht der Brüller ist.
Interresant ist QT5 kann mobile targets, währe also mal interresant zu wissen was das LCL QT5 widgetset davon abbhält mobil genutzt zu werden (Ich kenn mich damit leider zu wenig aus)
Wenn du aber unbedingt Pascal für Mobile Plattformen verwenden willst, und nicht halbfertige Lösungen wie LAWM zusammenhacken willst, ist Delphis FireMonkey wohl die einzig vernünftige Option. Die Community edition gibts kostenlos, damit kann man auch Crossplattform apps für Mac, Windows, Android und IOS bauen (auf der selben Codebasis). Funktioniert ganz gut, Firemonkey hat so ein paar problemchen (Es sieht nicht nativ aus, ist z.T. langsam), funktioniert aber. Natürlich hat das dann nicht mehr viel mit Lazarus zu tun
MacWomble hat geschrieben:... und nein, ich möchte definitiv nicht mehrere Versionen ein und derselben Library auf dem System haben. (allenfalls übergangsweise

)

Will ich auch nicht, muss ich aber