Forum: PC-Programmierung Stand der Technik cross-platform (compiler, automation, integration, test, VM)?


von Info (Gast)


Lesenswert?

Ich bastele gerade ein kleines C++ Programm mit Qt unter Windows 
(mingw).
Was ist gerade so gang und gäbe, um das auch für Linux(e) und MacOS zu 
bauen bzw. bauen zu lassen?

von Rolf M. (rmagnus)


Lesenswert?

Info schrieb:
> Was ist gerade so gang und gäbe, um das auch für Linux(e) und MacOS zu
> bauen bzw. bauen zu lassen?

Wie meinst du das? Wenn du qmake zum bauen verwendest und auf die 
Nutzung von Winapi-Funktionen verzichtest, kann man es meist unverändert 
bauen.

von Info (Gast)


Lesenswert?

Ich meine: gibt es Dienste bzw. Software die aus meinem Quelltext 
Windows, Linux und OSX binaries baut?

Ich sehe gelegentlich bei Github schicke Icons mit schicken Buzzwords.
Ich hatte gehofft, dass es zum Thema eine Übersicht in wenigen Worten 
gibt.

Es würde mir also auch schon ein Link auf eine Zusammenfassung völlig 
genügen ("du machst dir dein XYZ image [a], lädst das bei [x] rauf, 
wartest n Tage  und kannst die binaries dann runterladen").

Der Aufwand wird nicht lohnen, aber ich wollte mal über den Tellerrand 
blicken...


https://de.wikipedia.org/wiki/Kontinuierliche_Integration
https://de.wikipedia.org/wiki/Continuous_Delivery
https://de.wikipedia.org/wiki/Testautomatisierung

von Frank E. (Firma: Q3) (qualidat)


Lesenswert?

Ich kenne heute 2 Systeme, mit denen man halbwegs zuverlässig für 
Multi-Plattform compilieren kann:

a) Java, wobei man bei jeder Lib ganz genau hinsehen muss, ob sie 
tatsächlich für alle angestrebten Plattfprmen finktionierenden Code 
enthalten

b) XOJO mit den MBS-Plugis. Kostet, aber funktioniert sehr zuverlässig.

von Christian M. (Gast)


Lesenswert?

Purebasic

Gruss Chregu

von Torben (Gast)


Lesenswert?

Du benutzt doch schon Qt, somit hast Du für drei Platformen (Win, Linux 
und Mac) die gleiche Codebase

von Oliver S. (oliverso)


Lesenswert?

Prinzipiell klappt Cross-compile unter Linux für Windows problemlos. Du 
musst dir vermutlich eine passende Qt-Version dafür bauen, dann sollte 
auch das klappen.

Deine buzzword-Suche und Dienst-Vorstellungen lassen aber vermuten, daß 
das für dich einem größere Aufgabe wird.

Der Dienst, den du suchst, nennt sich Programmier-Dienstleistung. Du 
sagst denen, was du willst, und einige Zeit später bekommst du die 
fertigen Binaries. Voraussetzung ist natürlich die Überweisung eines 
passenden Geldbetrags.


Oliver

von Rolf M. (rmagnus)


Lesenswert?

Ich hab den Eindruck, als ob die Antworten allesamt an der Frage vorbei 
gehen. Was ich verstanden habe: Er hat einen Quellcode mit Qt 
geschrieben und sucht jetzt einen Buildserver, der das automatisiert 
compiliert für alle seine Zielplattformen.
Es gibt verschiedene Dienste im Internet, wie z.B. gitlab, die sowas 
anbieten. Und es gibt Software-Pakete, um sich sowas selbst aufzusetzen, 
wie z.B.Jenkins oder Bamboo.

von Sheeva P. (sheevaplug)


Lesenswert?

Info schrieb:
> Ich meine: gibt es Dienste bzw. Software die aus meinem Quelltext
> Windows, Linux und OSX binaries baut?

Zumindest für Linux-Binaries ist das auch unter Windows mit Docker 
relativ einfach. Der Trick ist: Du baust Dir ein Docker-Image mit den 
benötigten Buildwerkzeugen und -Libraries und dazu ein 
Entrypoint-Skript, das in das Verzeichnis mit Deinem Sourcecode wechselt 
und dort qmake aufruft. Dann mountest Du das Verzeichnis mit Deinem 
Sourcecode mit --volume beim Aufruf von "docker run" in den Container, 
und sobald dieser gestoppt ist, ist Dein Programm gebaut. Das 
funktioniert auch für verschiedene Distributionen und Versionen davon 
sehr gut.

Fortgeschrittene rufen anfangs am Ende des Entrypoint-Skripts am Ende 
noch ein "exec /bin/bash" auf, so daß nach dem Build eine interaktive 
Shell gestartet wird, um das gebaute Programm zum Beispiel mit ldd(2) 
darauf zu untersuchen, welche Libraries (Abhängigkeiten) es benötigt. 
Danach kann man diesen Teil ganz wunderbar durch den Bau 
distributionsspezifischer Pakete ersetzen, so daß ein Image zum Beispiel 
für den Bau von RPM-Paketen für RedHat, SuSE, CentOS und Fedora, und ein 
anderes Image für den Bau von Paketen für Debian und Ubuntu vorhanden 
ist.

Theoretisch müßte es sogar relativ easy möglich sein, das Programm mit 
weiteren Images bzw. Containern zu testen. Dazu bedarf es auf dem Host 
eines X-Servers wie VcXsrv und eines SSH-Clients, beides zusammen bietet 
MobaXTerm. Damit kannst Du Dich mit X-Forwarding auf einen 
OpenSSH-Server in einem laufenden Container verbinden, und dort dann 
Dein GUI-Programm aufrufen und nach Herzenslust testen. Zur 
Automatisierung solcher Tests bietet sich so etwas wie Autoit an.

All das hört sich viel komplizierter an, als es ist, aber wenn man alles 
einmal sauber durchgetestet hat und es dann einmal funktioniert, ist das 
sehr komfortabel und zudem portabel.

Irgendwo habe ich mal gelesen, daß man mit dem GCC im "Windows Subsystem 
for Linux" (WSL), das es als experimentelles(?) Feature unter Windows 
gibt, auch Linux-Binaries übersetzen lassen. Das kann ich mir gut 
vorstellen, denn die Pakete in diesem WSL sind ja ganz normale, native 
Ubuntu-Pakete, aber... naja, YMMV. ;-)

von Drahtverhau (Gast)


Lesenswert?

Ich mach grad was mit dotnet Core... Console lässt sich unter Windows 
und Linux auf dem raspberry ausführen... Auch Asp funktioniert auf 
beiden Systemen. Da ich nicht viel Ahnung von Linux habe war es trotzdem 
einfach dotnet auf dem raspberry zu installieren. Vielleicht hilft es.
Wenn ich es richtig verstanden habe geht mit dotnet c++, c#, vb und 
javascript

von Info (Gast)


Lesenswert?

Rolf M. schrieb:
> Es gibt verschiedene Dienste im Internet, wie z.B. gitlab, die sowas
> anbieten. Und es gibt Software-Pakete, um sich sowas selbst aufzusetzen,
> wie z.B.Jenkins oder Bamboo.

Sehe ich mir an, danke.

Sheeva P. schrieb:
> Zumindest für Linux-Binaries ist das auch unter Windows mit Docker
> relativ einfach.

Linux läuft auf/unter Docker auf/unter Windows?
Also ein Linux kann ich auch booten oder als VM laufen lassen, aber da 
sieht's mit der Automatisierung und vor allem dem Sprung zu OSX 
schlechter aus.



Danke!

von Horst (Gast)


Lesenswert?

Drahtverhau schrieb:
> Ich mach grad was mit dotnet Core... Console lässt sich unter Windows
> und Linux auf dem raspberry ausführen... Auch Asp funktioniert auf
> beiden Systemen. Da ich nicht viel Ahnung von Linux habe war es trotzdem
> einfach dotnet auf dem raspberry zu installieren. Vielleicht hilft es.
> Wenn ich es richtig verstanden habe geht mit dotnet c++, c#, vb und
> javascript

*megafacepalm

von Sheeva P. (sheevaplug)


Lesenswert?

Info schrieb:
> Linux läuft auf/unter Docker auf/unter Windows?

Korrekt. Windows-Docker bootet in älteren Versionen eine Linux-VM unter 
VirtualBox, neuere Versionen booten ein "Moby Linux" (womöglich eine 
MS-Variante?) unter Hyper-V. Darin laufen dann die Docker-Container.

> Also ein Linux kann ich auch booten oder als VM laufen lassen, aber da
> sieht's mit der Automatisierung und vor allem dem Sprung zu OSX
> schlechter aus.

Just das ist ja mein Punkt: Du kannst das unter Windows automatisieren, 
mithilfe passender docker- bzw docker-compose-Konfigurationen. ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.