8 Stimmen

Bewährte Verfahren für eine portable C++-Open-Source-Anwendung

Ich beginne ein plattformübergreifendes Open-Source-Projekt in C++. Meine Entwicklungsumgebung ist Linux. Möglicherweise gibt es andere Entwickler, die auch auf anderen Plattformen entwickeln. Ich brauche also Hilfe bei der Konfiguration und der Einrichtung der Entwicklungsumgebung, damit alle Entwickler von verschiedenen Plattformen problemlos entwickeln können.

Meine Fragen lauten wie folgt

  1. Compiler: Ich plane, g++ zu verwenden und habe gehört, dass es plattformübergreifend ist. Ist das eine gute Wahl?
  2. Dateien erstellen: Ich habe gesehen Code::Blöcke Editor und generiert Make-Dateien im Handumdrehen, ohne dass man eine manuell schreiben muss. Ist dies die beste Praxis oder muss ich Make-Dateien erstellen?
  3. Welche anderen Einstellungen müssen bei der Entwicklung plattformübergreifender Anwendungen beachtet werden?

Haben Sie eine Idee?

Modifier

Vielen Dank für die Antworten. Eine weitere Frage.

Erstellen Sie Makefiles von Hand? Oder gibt es ein Tool, das diese generieren kann?

0 Stimmen

Wie plattformübergreifend? (d.h. welche Plattformen). GUI, oder nicht-GUI?

0 Stimmen

Ein Teil wird eine gemeinsame Bibliothek sein. Und natürlich wird die GUI dabei sein.

7voto

ypnos Punkte 47895

Das Wichtigste, was Ihr Projekt aufholen muss, ist die Übertragbarkeit. Es sollte für jeden einfach zu erstellen und zu betreiben sein.

GCC (g++) ist in der Tat der Compiler der Wahl. Er stammt aus der Open-Source-Welt und wird daher von dieser am häufigsten verwendet.

Allerdings, ein einfaches Makefile reicht nicht aus . Bei der Generierung mit CodeBlocks oder einer anderen IDE gibt es ein Problem: Aufgrund ihrer Plattform müssen andere Entwickler wahrscheinlich ihre eigene generieren, haben aber nicht unbedingt CodeBlocks zur Hand oder wollen es einfach nicht verwenden.

Es gibt mehrere verschiedene plattformübergreifende Build-Systeme, die IDE-unabhängig sind. Einige von ihnen erstellen Makefiles, andere verwenden kein Make, sondern bauen selbst.

  • Das am weitesten verbreitete Build-System ist Autotools . Allerdings ist es schwer zu erlernen, unübersichtlich und insgesamt nervig.
  • Unter vielen anderen Möglichkeiten, Ich empfehle Waf . Es hat sich bereits bei mehreren größeren Open-Source-Projekten bewährt. XMMS2 ist ein gutes Beispiel dafür (obwohl es kein sehr populäres Projekt ist, hat es ein großes Build mit vielen Plugins und läuft auf vielen Plattformen, einschließlich OS X und Windows). Obwohl waf nicht sehr weit verbreitet ist, soll es mit dem Quellcode ausgeliefert werden und einfach einzurichten sein. Meine Empfehlung für Sie.

Edit : um mit Ihrem Open-Source-Projekt zu beginnen, empfehle ich auch dieses Buch von Karl Fogel (kann online gelesen werden). Viel Spaß!

3voto

Rob Punkte 504

Der GNU C++ Compiler ist eine relativ gute Wahl für plattformübergreifende Arbeit, außer dass unter Windows nur eine relativ alte Version (3.4) nativ unterstützt wird. Es wird daran gearbeitet, eine 4.x-Serie auf Windows zu portieren, aber bisher ist sie noch nicht reif für die Prime Time.

Anstatt sich darauf zu konzentrieren, welchen Compiler man verwenden sollte, würde ich mich stattdessen darauf konzentrieren, welche Sprache man verwenden sollte. Die Verwendung von C++ nach ANSI-Standard trägt wesentlich dazu bei, dass Ihr Code plattformübergreifend ist. Verstecken Sie plattformspezifisches Verhalten so weit wie möglich hinter einem guten Toolkit, wie z. B. Qt.

Bei plattformübergreifenden Build-Umgebungen kann dies davon abhängen, welches Toolkit Sie verwenden. Qt hat QMake, das relativ gut ist. CMake ist eine weitere überzeugende Wahl. Ich würde Autotools meiden, da es außerhalb von UNIX sehr schlecht portierbar ist - die Verwendung von Autotools auf Win32 ist sehr oft die Qual der Verdammten.

Arbeiten Sie endlich auf mehreren Plattformen jetzt. VMware ist für solche Zwecke von unschätzbarem Wert. Bringen Sie Ihren Code dazu, unter Linux, FreeBSD und Windows zu kompilieren. Wenn Sie diese drei Ziele erreichen, wird der Wechsel zu anderen Plattformen in Zukunft wesentlich einfacher sein.

2voto

Ryan Graham Punkte 7768

Dies hängt von den jeweiligen Plattformen ab, Qt können die Antworten enthalten. Vor allem mit der neuen Lizenz.

0 Stimmen

Qt und qmake. Ich empfehle es auch über wxWidgets, die von CodeBlocks propagiert wird.

2voto

Mr Fooz Punkte 102791
  • Beginnen Sie jetzt mit der Entwicklung auf mehreren Plattformen: So werden Probleme frühzeitig erkannt.
  • Wenn Sie sich nur für Linux und Mac OS X interessieren, dann ist g++ genau richtig für Sie. Es sind verschiedene IDEs und Build-Systeme verfügbar. Sie sollten vielleicht die Verwendung von Autotools um bei der Konfiguration behilflich zu sein.
  • Wenn Sie auf Windows abzielen, wird es ein wenig komplizierter. Sie können cygwin und/oder mingw verwenden, aber das kann manchmal kompliziert sein. Verschiedene Projekte verwenden plattformübergreifende Build- und Konfigurationssysteme wie CMake um viele Fragen für sie zu regeln.

1voto

dirkgently Punkte 104289

Compiler: Ich plane, g++ zu verwenden und habe gehört, dass es plattformübergreifend ist. Ist das eine gute Wahl?

Ja, aber welche Version? Haben Sie eine Liste der bekannten Probleme für die Version, die Sie verwenden wollen?

Dateien erstellen: Ich habe den Code::Blocks-Editor gesehen, der Make-Dateien im Handumdrehen generiert, ohne dass man sie manuell schreiben muss. Ist dies die beste Praxis oder muss ich Make-Dateien erstellen?

Eine klassische Wahl. Wahrscheinlich werden Sie sie anpassen müssen, wenn das Projekt wächst.

Welche anderen Einstellungen müssen bei der Entwicklung plattformübergreifender Anwendungen beachtet werden?

Eine g++/makefile-Portierung ist für alle gängigen Plattformen verfügbar. Wenn Sie sich also vergewissert haben, dass Sie keine plattformspezifischen APIs oder Konstrukte verwenden, sollten Sie startklar sein.

Wie sieht es mit den folgenden Punkten aus?

  • Bibliotheken von Drittanbietern? Achten Sie darauf, dass Sie nicht auf eine plattformspezifische Bibliothek hereinfallen.
  • Lizenzierungsfragen (Ihr Code und andere)
  • SCM

0 Stimmen

Ich habe die neueste Version von G++. Installiert mit Paketmanager in Ubuntu.

0 Stimmen

Ich muss das wirklich nicht wissen, aber Sie sollten es wissen :) Notieren Sie sich einfach die Versionen der von Ihnen verwendeten Tools. Das kann Ihnen in den nächsten Tagen eine Menge Ärger ersparen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X