Best Practices für eine portable Opensource-Anwendung von C ++ [geschlossen]

8

Ich starte ein Open-Source-Cross-Plattform-Projekt in C ++. Meine Entwicklungsumgebung ist Linux. Es kann andere Entwickler geben, die sich auch von verschiedenen Plattformen entwickeln. Daher brauche ich Hilfe beim Einstieg in die Konfigurations- und Entwicklungsumgebung, damit alle Entwickler von mehreren Plattformen problemlos entwickeln können.

Hier sind meine Fragen

  1. Compiler: Ich plane g ++ zu benutzen und höre, dass es plattformübergreifend ist. Ist das eine gute Wahl?
  2. Dateien erstellen: Ich habe den Code :: Blocks -Editor gesehen und er erzeugt make-Dateien on fly und Sie müssen nicht manuell eine schreiben. Ist dies die beste Vorgehensweise oder muss ich Make-Dateien erstellen?
  3. Welche weiteren Einstellungen sind bei der Entwicklung von plattformübergreifenden Anwendungen zu beachten?

Irgendwelche Gedanken?

Bearbeiten

Danke für die Antworten. Noch eine Frage.

Erstellen Sie Makefiles von Hand? Oder gibt es irgendein Werkzeug, das es erzeugen kann?

    
Navaneeth K N 26.03.2009, 03:47
quelle

7 Antworten

7

Das Wichtigste für Ihr Projekt ist die Portabilität. Es sollte einfach sein, & Amp; Lauf für alle.

GCC (g ++) ist in der Tat der Compiler der Wahl. Es kommt aus der Open-Source-Welt und wird daher am weitesten verbreitet.

Allerdings wird ein einfaches Makefile es nicht schneiden . Die Generierung mit CodeBlocks oder einer anderen IDE hat ein Problem: Aufgrund ihrer Plattform werden andere Entwickler wahrscheinlich eigene generieren müssen, aber nicht unbedingt CodeBlocks zur Hand haben oder einfach nicht verwenden wollen.

>

Es gibt mehrere verschiedene plattformübergreifende Build-Systeme, die IDE-agnostisch sind. Einige von ihnen erstellen Makefiles, andere verwenden make nicht, sondern bauen sie selbst auf.

  • Das am weitesten verbreitete Build-System ist Autotools . Es ist jedoch schwer zu lernen, überladen und ein allgemeiner Schmerz in den Arsch.
  • Von vielen anderen Optionen empfehle ich Waf . Es wird bereits von mehreren größeren Open-Source-Projekten belegt, wobei XMMS2 ein gutes Beispiel ist (obwohl es kein sehr populäres Projekt ist, hat es einen großen Build mit vielen Plugins und baut auf vielen Plattformen auf, einschließlich OS X und Windows). Obwohl es nicht sehr weit gefasst ist, soll es mit der Quelle geliefert werden und einfach zu installieren sein. Meine Empfehlung für dich.

Bearbeiten: um mit Ihrem Open-Source-Projekt anzufangen, empfehle ich auch dieses Buch von Karl Fogel (verfügbar um online zu lesen). Viel Spaß!

    
ypnos 26.03.2009, 04:03
quelle
3

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 ist in Arbeit, eine 4.x-Serie nach Windows zu portieren, aber bis jetzt ist es noch nicht fertig für die Primetime.

Anstatt sich auf den zu verwendenden Compiler zu konzentrieren, konzentriere ich mich stattdessen auf die zu verwendende Sprache. Das Schreiben des ANSI-Standards C ++ wird einen großen Beitrag dazu leisten, dass Ihr Code crossplatform wird. Verbergen Sie plattformspezifisches Verhalten so weit wie möglich hinter einem guten Toolkit wie Qt.

Bei plattformübergreifenden Build-Umgebungen hängt dies möglicherweise davon ab, welches Toolkit Sie verwenden. Qt hat QMake, was relativ gut ist. CMake ist eine andere zwingende Wahl. Ich würde Autotools vermeiden, da es außerhalb von UNIX sehr schlecht portabel ist - mit Autotools auf Win32 ist sehr oft die Qual der Verdammten.

Beginnen Sie abschließend mit der Arbeit an mehreren Plattformen . VMware ist für so etwas von unschätzbarem Wert. Erhalte deinen Code für die Kompilierung unter Linux, unter FreeBSD und unter Windows. Wenn Sie diese drei Ziele treffen können, wird der Wechsel zu anderen Plattformen in Zukunft wesentlich einfacher.

    
Rob 26.03.2009 06:12
quelle
2
  • Beginnen Sie jetzt, auf mehreren Plattformen zu bauen: Es macht Probleme schon früh aus.
  • Wenn Sie nur an Linux und Mac OS X interessiert sind, dann sollte g ++ in Ordnung sein. Es stehen verschiedene IDEs und Build-Systeme zur Verfügung. Sie sollten in Erwägung ziehen, autotools zu verwenden, um die Konfiguration zu unterstützen.
  • Wenn Sie Windows als Ziel verwenden möchten, wird es etwas 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 sich um viele Probleme zu kümmern.
Mr Fooz 26.03.2009 04:02
quelle
2

Abhängig von den spezifischen Plattformen kann Qt die Antworten enthalten. Vor allem mit der neuen Lizenz.

    
Ryan Graham 26.03.2009 04:02
quelle
1
Nikhil 26.03.2009 03:52
quelle
1
  

Compiler: Ich plane g ++ zu benutzen und höre, dass es plattformübergreifend ist. Ist das eine gute Wahl?

Ja, aber welche Version? Haben Sie eine Liste bekannter Probleme für die Version, die Sie verwenden werden?

  

Dateien erstellen: Ich habe den Code :: Blocks-Editor gesehen und er generiert make-Dateien on fly und Sie müssen nicht manuell eine schreiben. Ist dies die beste Vorgehensweise oder muss ich Make-Dateien erstellen?

Eine klassische Wahl. Sie müssen sie wahrscheinlich optimieren, wenn das Projekt wächst.

  

Welche weiteren Einstellungen sind bei der Entwicklung von plattformübergreifenden Anwendungen zu beachten?

Ein g ++ / makefile-Port ist für jede wichtige Plattform verfügbar. Sobald Sie also sichergestellt haben, dass Sie keine plattformspezifische API oder kein Konstrukt verwenden, sollten Sie gut gehen können.

Was ist mit den folgenden?

  • Bibliotheken von Drittanbietern? Stellen Sie sicher, dass Sie nicht auf eine plattformspezifische fallen.
  • Lizenzprobleme (Ihr Code und andere)
  • SCM
dirkgently 26.03.2009 03:50
quelle
1

Vielleicht möchten Sie sich auch dieses Buch ansehen:

Ссылка alt text http://ecx.images-amazon.com/images/I/51gys5zbr4L._SL500_AA240_. jpg

    
Martin 26.03.2009 04:16
quelle