Microsoft Office ist keine Multi-Plattform-Anwendung. Wenn Sie jemals die Mac-Version verwendet haben, die Sie kennen würden. Die letzte Multi-Plattform-Version von Office war 1998 die berüchtigte Version von Office 6.0. Was passierte, war, dass die Benutzer über das Aussehen und das Gefühl meckerten und die Porting-Mentalität verurteilten.
Die Mac-Version von Office wird nicht nur von einem anderen Team geschrieben, sondern von einer komplett anderen Abteilung geschrieben: Die Mac Business Unit, auch MacBU genannt. Verschiedener Abteilungsleiter, verschiedene Manager und ich glaube auch verschiedene Vertriebs- und Marketingleute.
Das ist eine Möglichkeit, es zu tun. Auch unter Mac-Nutzern als "der richtige Weg" bekannt.
Natürlich ist nicht jeder der Größe von Microsoft und kann es sich leisten, eine komplett andere Tochtergesellschaft zu erstellen, nur um Mac-Benutzer (viel weniger Linux-Benutzer) zu unterstützen. Der etwas vernünftigere Weg, dies zu tun, ist die Verwendung einer plattformübergreifenden Bibliothek für GUI-Sachen wie wxWidgets oder QT oder GTK. Schließlich wird sich der Großteil Ihres Kern-C-Codes nicht über viele Plattformen hinweg ändern, nur die proprietären Dinge wie GUI und Dateiverwaltung. Heck, Sie können sogar bei POSIX-Funktionsaufruf für die Dateiverwaltung und Vernetzung für plattformübergreifend bleiben. Aber seien Sie gewarnt, es besteht eine hohe Wahrscheinlichkeit, dass Mac-Benutzer das Endergebnis hassen (wie bei MS Office 6.0).
Der dritte Weg ist der mittlere Weg. Halten Sie den allgemeinen, zentralen Anwendungscode von den proprietären GUI-Inhalten getrennt (was im Hinblick auf Wartbarkeit eine gute Idee ist). Das MVC-Entwurfsmuster ist eine gute Möglichkeit, dies zu tun. Haben Sie einen Weg (mit #define oder anderen Build-Skripten/Makefiles), um die View- und Controller-Komponenten Ihres MVC-Frameworks zu wechseln. Das macht Google mit Chrome. Die Mac-Version verwendet native Mac-Grafiken und die Windows/Linux-Version verwendet eine Grafik-Engine namens Skia. Der Kern von Chrome ist WebKit und V8, die beide plattformübergreifend sind.
Was ist die Frage? –