c ++ - Skrivning af et tværplatformsprogram

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan kunne jeg skrive et program, der kører på både Windows 7, Mac OS X (og måske også Linux)?


Jeg hørte Qt er en god ramme for at opbygge platforme GUI'er, men jeg tror, ​​at hver programversion har brug for en kompilering, er det ikke rigtigt? Og skal jeg kompilere win-versionen under Windows, Mac-versionen under Mac OS X, Linux version under Linux og så videre?


Jeg får ideer og/eller forslag

Bedste reference


Det underliggende binære format er forskelligt på hver platform, så medmindre du bruger en virtuel maskine (som Java eller Flash), skal du genopbygge dit program på hver platform.


Nogle compilers (som GCC) tillader cross-compiling, men det er ikke trivielt at oprette. Sandsynligvis det nemmeste system til at krydskompilere på er Linux (der er flere open source-projekter, der har kryds kompilering oprettet fra Linux til Windows).


I tilfælde af en GUI-applikation afhænger det af sproget - hvis du sidder fast med C ++, kan Qt eller wxWindows være et rimeligt valg, der giver et abstraktionslag over det native vinduessystem.


Hvis du kan gå med Java, gør det livet enklere, men vinduesystemet er Java og ikke indfødt.


Et andet sprog at tænke på er FreePascal w/Lazarus - den har en rigtig god GUI-designer, der kompilerer til det native vinduessystem på alle platforme (WinAPI på Windows, Kakao på OSX og GTK på Linux).

Andre referencer 1


Ikke sikker på, om C ++ er et must, men Adobe Air er et godt platform for udvikling af platforme til desktop, og det vokser også til mobiludvikling. Hvis du har brug for et eksempel på en større applikation, der bruger Adobe Air til at distribuere til flere desktop-operativsystemer, skal du bare tjekke tweetdeck http://www.tweetdeck.com/[1]


Jeg foreslår også, at du kigger på Flex og Flash Builder, hvis du går den rute.

Andre referencer 2


Der er to separate problemer, som jeg vil fremhæve, når du skriver cross-platform-programmer - hvordan man gør din kode bærbar, og hvordan man skal sørge for, at den bliver bygget på de forskellige platforme.


Så vidt bygningssiden af ​​tingene går, ville jeg se på et platformsbyggesystem som CMake (http://www.cmake.org). Du skriver stort set et script, og CMake vil generere den relevante projektfil/makefile til en bestemt platform. Du opbygger derefter dit program på hver platform som du normalt ville. For eksempel kan du i Windows bruge CMake til at generere et Visual C ++-projekt til dig, og derefter bruge Visual C ++ til faktisk at bygge din eksekverbare. På Linux kan du bruge CMake til at generere en makefile, og derefter bygge den eksekverbare ved hjælp af g ++. [2]


Det andet aspekt er, hvordan du kan gøre din kode bærbar - nøglen er at skrive C + + standard-kompatibel kode og gøre brug af biblioteker, der er bærbare på tværs af de platforme du er interesseret i. Du kan (og kan nogle gange behøver) skrive platformspecifik kode for hver af de forskellige platforme - hvis du gør det, skal du skjule det bag en bærbar grænseflade og have resten af ​​koden bruge det.

Andre referencer 3


Ja, du skal kompilere for hver version, når du bruger C ++.


Det eneste, der forhindrer dig i at kompilere et program, for eksempel til Windows på Mac, er at få et værktøj til at gøre det. Det er muligt, men problemet er at finde værktøjssættet.


Du kan også bruge en virtuel maskine til at køre forskellige OS'er og kompilere kode for alle platforme på samme maskine.

Andre referencer 4


Java kører på Windows, OS X og Linux