C ++ IDE für Linux? [geschlossen]

209

Ich möchte meinen Programmierhorizont auf Linux erweitern. Ein gutes, zuverlässiges Basis-Toolset ist wichtig, und was ist grundlegender als eine IDE?

Ich konnte diese SO-Themen finden:

Ich suche keine leichte IDE. Wenn eine IDE das Geld wert ist, werde ich dafür bezahlen, sodass sie nicht kostenlos sein muss.

Meine Frage also:

Was nützt die C ++ - Programmier-IDE für Linux?

Die Mindestanforderungen sind Standard: Syntaxhervorhebung, Code-Vervollständigung (wie Intellisense oder sein Eclipse-Gegenstück) und integriertes Debugging (z. B. grundlegende Haltepunkte).

Ich habe selbst danach gesucht, aber es gibt so viele, dass es fast unmöglich ist, das Gute von dem Schlechten von Hand zu trennen, insbesondere für jemanden wie mich, der wenig Erfahrung mit C ++ - Codierung unter Linux hat. Ich weiß, dass Eclipse C ++ unterstützt , und ich mag diese IDE für Java wirklich, aber ist sie gut für C ++ und gibt es etwas Besseres?

Der zweite Beitrag enthält tatsächlich einige gute Vorschläge, aber was mir fehlt, ist, was genau die vorgeschlagene IDE für den Benutzer so gut macht. Was sind ihre (Nachteile)?

Vielleicht sollte meine Frage deshalb lauten:

Welche IDE schlagen Sie vor (aufgrund Ihrer Erfahrungen) und warum?

Peter Mortensen
quelle
1
Dies ist meiner Meinung nach die vierte Frage "Welche IDE soll ich unter Linux verwenden?" In ein oder zwei Tagen.
Ben Collins
Vielleicht sollten Sie sich das Datum ansehen, an dem diese Frage gestellt wurde ... oder die neueren Fragen auf diesen Punkt verweisen
Uhr
In der letzten Version hat Eclipse eclipse.org/linuxtools in seinen Release-Zug integriert. Dieses Projekt zielt darauf ab, Eclipse durch die Integration von Linux-spezifischen Tools zu einer vollwertigeren C / C ++ - IDE unter Linux zu machen.
Jean Hominal

Antworten:

259

Anfangs: Verwirrung

Als ich diese Antwort ursprünglich schrieb, hatte ich kürzlich von Visual Studio (mit jahrelanger Erfahrung) zu Linux gewechselt und als erstes versucht, eine vernünftige IDE zu finden. Zu diesem Zeitpunkt war dies unmöglich: Es gab keine gute IDE.

Offenbarung: UNIX ist eine IDE. Alles davon. 1

Und dann wurde mir klar, dass die IDE unter Linux die Befehlszeile mit ihren Tools ist:

  • Zuerst richten Sie Ihre Shell ein
  • und dein Herausgeber; Wählen Sie Ihr Gift - beide sind auf dem neuesten Stand der Technik:

Abhängig von Ihren Anforderungen müssen Sie dann mehrere Plugins installieren und konfigurieren, damit der Editor einwandfrei funktioniert (das ist der nervige Teil). Beispielsweise profitieren die meisten Programmierer in Vim vom YouCompleteMe- Plugin für die intelligente automatische Vervollständigung.

Sobald dies erledigt ist, ist die Shell Ihre Befehlsschnittstelle für die Interaktion mit den verschiedenen Tools - Debugger (gdb), Profiler (gprof, valgrind) usw. Sie richten Ihre Projekt- / Build-Umgebung mit Make , CMake , SnakeMake oder einem der verschiedenen Tools ein Alternativen. Und Sie verwalten Ihren Code mit einem Versionskontrollsystem (die meisten Leute verwenden Git ). Sie verwenden auch tmux (zuvor auch screen), um zu multiplexen (= mehrere Fenster / Registerkarten / Bedienfelder zu denken) und Ihre Terminalsitzung beizubehalten.

Der Punkt ist, dass diese dank der Shell und einiger Konventionen zum Schreiben von Werkzeugen alle miteinander integriert sind . Auf diese Weise ist die Linux-Shell eine wirklich integrierte Entwicklungsumgebung , die anderen modernen IDEs völlig ebenbürtig ist. (Dies bedeutet nicht, dass einzelne IDEs keine Funktionen haben, die der Befehlszeile möglicherweise fehlen, aber das Gegenteil ist auch der Fall.)

Jedem das Seine

Ich kann nicht übertreiben, wie gut der oben genannte Workflow funktioniert, wenn Sie sich daran gewöhnt haben. Einige Leute bevorzugen jedoch einfach grafische Editoren, und in den Jahren, seit diese Antwort ursprünglich geschrieben wurde, hat Linux eine Reihe hervorragender grafischer IDEs für mehrere verschiedene Programmiersprachen erhalten (meines Wissens jedoch nicht für C ++). Probieren Sie sie aus, auch wenn Sie sie - wie ich - nicht verwenden. Hier ist nur eine kleine und voreingenommene Auswahl:

  • Für die Python-Entwicklung gibt es PyCharm
  • Für R gibt es RStudio
  • Für JavaScript und TypeScript gibt es Visual Studio Code (der auch ein guter Allround-Editor ist).
  • Und schließlich lieben viele Menschen den Sublime Text Editor für die allgemeine Codebearbeitung.

Beachten Sie, dass diese Liste bei weitem nicht vollständig ist.


1 Ich habe diesen Titel aus dem Kommentar von dsm gestohlen.

2 Ich habe mich hier auf Vim bezogen. Und während einfaches Vim immer noch mehr als fähig ist, ist Neovim ein vielversprechender Neustart und es hat ein paar alte Warzen modernisiert.

Konrad Rudolph
quelle
223
Ich bin absolut anderer Meinung. Eine anständige Idee ist wichtig, egal woran du arbeitest. es erhöht die Produktivität drastisch. Ich benutze Codeblöcke und finde, dass es fast unmöglich ist, zu VI zurückzukehren. Ich habe auf Mac, Win und Linux codiert, und obwohl ich Visual Studio als die beste IDE empfinde, kommt Codeblocks nahe.
DavidG
35
David, vielleicht könnten Sie genau angeben (eigene Antwort…), was genau in der von mir beschriebenen Toolchain fehlt, die eine IDE liefert. Wie gesagt, ich habe einen starken IDE-Hintergrund und meine Produktivitätssteigerung war genau umgekehrt zu Ihrer.
Konrad Rudolph
48
Welche Refactoring-Unterstützung bietet Vim an? In Eclipse (das unter Linux ausgeführt wird) kann ich den Namen jeder gewünschten Java-Methode ändern, auch wenn sie an 300 Stellen aufgerufen wird. Schaffst du das einfach in Vim?
quant_dev
25
quant_dev: Für das Refactoring muss der Quellcode auf irgendeine Weise analysiert werden. Soweit ich weiß, machen das keine VIM-Module, daher lautet die Antwort auf Ihre Frage "keine". Dies ist einer der Gründe, eine IDE für IDE-zentrierte Sprachen wie Java zu bevorzugen. Da die Refactoring-Unterstützung (usw.) für C ++ ohnehin so gering ist (auch in IDEs), gilt dies nicht für C ++.
Konrad Rudolph
11
@hasen: oh aber große teile davon können . Zum Beispiel eine bereichsspezifische Umbenennung. Und glauben Sie mir, das ist groß . Und Ecplise (zB) kann hier viel Arbeit sparen .
Konrad Rudolph
86

Mein persönlicher Favorit ist die CodeLite 2.x IDE.

siehe: http://www.codelite.org

Die Entscheidung für CodeLite basierte auf einer Untersuchung der folgenden C ++ - IDE für Linux:

  • Eclipse Galileo mit CDT Plugin
  • NetBeans 6.7 (das auch die Basis für die SunStudio-IDE ist)
  • KDevelop4
  • CodeBlocks 8.02
  • CodeLite 2.x.

Immerhin habe ich mich für CodeLite 2.x entschieden .

Im Folgenden habe ich einige Vor- und Nachteile in Bezug auf die genannten C ++ - IDEs aufgeführt. Bitte beachten Sie, dass dies nur meine persönliche Meinung widerspiegelt!

EDIT : Wie schade, dass SOF keine Tabellen unterstützt, also muss ich in Absätzen schreiben ...

Eclipse Galileo mit CDT Plugin

Vorteile:

  • vernünftig schnell
  • unterstützt auch Java, Perl (mit EPIC-Plugin)
  • häufig verwendet und gut gepflegt
  • auch für andere Betriebssystemvarianten verfügbar (Windows, MacOS, Solaris, AIX (?))

Nachteile:

  • Die Benutzeroberfläche ist sehr verwirrend und etwas inkonsistent - überhaupt nicht sehr intuitiv
  • schweres Gewicht
  • Unterstützt nur CVS (AFAIK)

NetBeans 6.7 (beachten Sie, dass dies auch die Basis für die SunStudio-IDE ist)

Vorteile:

  • Eine der intuitivsten GUI, die ich je gesehen habe
  • unterstützt auch Java, Python, Ruby
  • integriert CVS, SVN, Mercurial
  • häufig verwendet und gut gepflegt
  • auch für andere Betriebssystemvarianten verfügbar (Windows, MacOS, Solaris)

Nachteile:

  • extrem langsam
  • schweres Gewicht
  • verwendet Leerzeichen zum Einrücken, was bei meiner Arbeit nicht die Richtlinie ist. Ich bin mir sicher, dass dies konfigurierbar ist, aber ich konnte nicht herausfinden, wie das geht

KDevelop4 (Hinweis: Ich habe nicht viel getestet)

Vorteile:

  • häufig unter Linux verwendet
  • integriert CVS, SVN, Mercurial

Nachteile:

  • Die GUI sieht etwas altmodisch aus
  • schweres Gewicht
  • sehr spezifisch für die KDE-Umgebung

CodeBlocks 8.02 (Hinweis: Ich habe nicht viel getestet)

Vorteile:

  • vernünftig schnell

Nachteile:

  • Die GUI sieht etwas altmodisch aus (obwohl sie einen schönen Startbildschirm hat)
  • Die Schriftarten im Editor sind sehr klein
  • Einige Symbole (z. B. die Debugger-bezogenen Symbole zum Starten / Steppen) sind sehr klein
  • Keine Integration in die Quellcodeverwaltung

CodeLite 2.x (Hinweis: Dies ist mein persönlicher Favorit)

Vorteile:

  • Die beste, modern aussehende und intuitive Benutzeroberfläche, die ich unter Linux gesehen habe
  • Leicht
  • vernünftig schnell
  • integriert SVN
  • auch unter anderen Betriebssystemen verfügbar (Windows, MacOS, Solaris (?))

Nachteile:

  • Keine CVS-Integration (das ist wichtig für mich, weil ich es bei der Arbeit verwenden muss)
  • Keine Unterstützung für Java, Perl, Python (wäre schön zu haben)
anon
quelle
14
Eclispe unterstützt Hg, Git, SVN und andere über Plugins. Und Start- / Begrüßungsbildschirme saugen riesige Bälle. Sie verbrauchen Ressourcen und bieten nur sehr wenig Nutzen. Und sie erscheinen normalerweise vor allem, woran ich gerade arbeite, während sie darauf warten, dass die App geladen wird. PortableApps und Eclipse müssen sie entfernen.
Chris K
4
Codelite hat die gleiche Tastenkombination wie Visual Studio zum Debuggen, was es für Visual-Süchtige sehr benutzerfreundlich macht.
Raoul Supercopter
Vielleicht schlägt er hier ein altes Pferd, aber die GUI von IMO Eclipse ist wirklich unübertroffen. Ja, es ist zunächst schwierig zu lernen, aber es ist wie in Vi, wo die Produktivität in die Höhe schnellen kann, nachdem Sie die steile Lernkurve erklommen haben. Um einen Punkt zu beweisen, drücken Sie Strg + 3 - eine der großartigsten Funktionen in Eclipse IMO.
kizzx2
"Nachteile: verwendet Leerzeichen zum Einrücken [...] Ich bin sicher, dass dies konfigurierbar ist, aber ich konnte nicht herausfinden, wie das geht." Das zeigt, dass Sie das Werkzeug nicht wirklich gewohnt sind, sonst hätten Sie schließlich die Option gefunden.
Johan Boulé
5
CodeLite ist erstaunlich, wie das Kauen auf Dentyne-Kaugummi. Es wird einen frischen und minzigen Geschmack in Ihrem Mund hinterlassen. Eclipse ist zwar nützlich, gibt Ihnen aber auch dieses Erbrochene nach dem Geschmack, wenn Sie es verwenden. Ich weiß, das klingt kindisch zu sagen, aber es ist wirklich die beste Metapher, um das "Gefühl" zu erklären, sie zu benutzen. Ich bin sicher, andere werden mir zustimmen.
Didier A.
75
  1. Code :: Blöcke
  2. Eclipse CDT

Bald werden Sie feststellen, dass IDEs nicht ausreichen, und Sie müssen trotzdem die GCC-Toolchain lernen (was nicht schwer ist, zumindest die grundlegenden Funktionen zu erlernen). Aber kein Schaden bei der Verringerung der Übergangsschmerzen mit den IDEs, IMO.

Imran
quelle
+1 für Codeblöcke und ja, Sie möchten auf jeden Fall zumindest lernen, wie Sie Ihre Programme aus einer Shell kompilieren und ausführen, da code :: blocks einige Fehler aufweist.
Earlz
Eclipse ist
meiner Meinung
7
-1 für Codeblöcke. -1 für Eclipse. Beide ändern ihre Benutzeroberfläche während des Debuggens. Bis zu dem Punkt, an dem sich ein Anfänger normalerweise verloren fühlt. Beide können Fork nicht debuggen. Beide haben schlimme Probleme mit der SVN / CVS-Integration. (Die neueste Eclipse in Verbindung mit Subclipse ist ab dem 28.04.11 in Gnome defekt und stürzt alle 10 Minuten ab.) Das Einrichten der Quellcodeverwaltung ist ein Albtraum und die Integration in diese IDEs ist ebenso schwierig.
bleepzter
4
@bleepzter -1 für die Verwendung von SVN / CVS zu Beginn;)
OneOfOne
1
Mercurial, Git und Bazaar, die in jeder Hinsicht überlegen sind.
OneOfOne
66

Eine schnelle Antwort, um diesem Thema ein wenig mehr Wissen hinzuzufügen:
Sie müssen sich unbedingt NetBeans ansehen . Netbeans 6.7 bietet folgende Funktionen:

  • C / C ++ - Projekte und Vorlagen: Unterstützt Syntaxhervorhebung, automatische Codevervollständigung und automatisches Einrücken.
  • Es hat einen C / C ++ - Debugger
  • Unterstützt Compilerkonfigurationen, Configuration Manager und Makefile-Unterstützung (mit einem Assistenten).
  • Es verfügt über ein Klassenfenster, ein Verwendungsfenster und ein Dateinavigationsfenster (oder -fenster).
  • Eine Makro-Erweiterungsansicht sowie QuickInfos .
  • Unterstützung für die QT-Entwicklung .

Ich denke, es ist eine perfekte (und weitaus bessere) Visual Studio-Ersetzung und ein sehr gutes Werkzeug, um C / C ++ zu lernen.

Viel Glück!

Ramayac
quelle
2
Es ist auch sehr gut für C ++. Es hat den besten Sprachparser aller Zeiten.
Johan Boulé
1
Ich habe Netbeans viel mehr genossen als Eclipse für die C ++ - Entwicklung.
Thomas Langston
9
NetBeans macht so viel mehr Spaß als Eclipse, ich wünschte wirklich, mehr Leute würden anfangen, das zu realisieren.
Didier A.
1
Nachdem ich wochenlang mit Eclipse gekämpft hatte, fand ich dies, wechselte zu NetBeans und danke! Es hat eine schönere Oberfläche, ist reaktionsschneller, intuitiver und anpassbar. Beats Eclipse zweifellos
Frederik
1
Eine weitere Abstimmung hier darüber, wie viel besser NetBeans als Eclipse ist. Es hat auch bei weitem die beste Vim-Emulation (als Plugin), die ich je benutzt habe.
dachte am
52

Zumindest für Qt-spezifische Projekte ist der Qt Creator (von Nokia / Trolltech / Digia) vielversprechend.

Henrik Hartz
quelle
10
Ich benutze es auch für Nicht-Qt-Projekte.
Chance
Es ist nett. Ich habe es versucht und mag es sehr.
Tyler Long
32

Könntest du ein bisschen mehr klarstellen, wie es für dich war, was du ändern musstest? Vielleicht könnten Sie mich in die richtige Richtung weisen, indem Sie einige Links zu den von Ihnen verwendeten Informationen bereitstellen.

Meine erste Quelle waren eigentlich die manSeiten der Werkzeuge . Schreib einfach

$ man toolname

in der Befehlszeile ( $hier ist ein Teil der Eingabeaufforderung, nicht die Eingabe).

Je nach Plattform sind sie recht gut geschrieben und können auch im Internet gefunden werden. Im Fall von habe makeich tatsächlich die vollständige Dokumentation gelesen, die einige Stunden gedauert hat. Eigentlich denke ich nicht, dass dies in den meisten Fällen notwendig oder hilfreich ist, aber ich hatte einige spezielle Anforderungen in meinen ersten Aufgaben unter Linux, die ein ausgeklügeltes Makefile erforderten. Nachdem ich das Makefile geschrieben hatte, gab ich es einem erfahrenen Kollegen, der einige kleinere Änderungen und Korrekturen vorgenommen hatte. Danach wusste ich es ziemlich genau make.

Ich habe GVIM verwendet, weil ich dort einige (aber nicht viele) Erfahrungen gesammelt habe. Ich kann überhaupt nichts über Emacs oder Alternativen sagen. Ich finde es wirklich hilfreich, die .gvimrcKonfigurationsdatei anderer Leute zu lesen . Viele Leute stellen es ins Internet. Hier ist meins .

Versuchen Sie nicht, alle Binutils gleichzeitig zu beherrschen, es gibt zu viele Funktionen. Verschaffen Sie sich jedoch einen allgemeinen Überblick, damit Sie wissen, wo Sie suchen müssen, wenn Sie in Zukunft etwas benötigen. Sie sollten jedoch alle wichtigen Parameter für g++und kennen ld(das GCC-Linker-Tool, das automatisch aufgerufen wird, sofern dies nicht ausdrücklich verhindert wird).

Ich bin auch neugierig, haben Sie Code-Vervollständigung und Syntax-Hervorhebung, wenn Sie codieren?

Syntaxhervorhebung: Ja, und eine viel bessere als Visual Studio. Code - Vervollständigung: ja- ish . Zunächst muss ich zugeben, dass ich die C ++ - Code-Vervollständigung auch in Visual Studio nicht verwendet habe, da sie (im Vergleich zu VB und C #) nicht gut genug war. Ich benutze es jetzt nicht oft, aber dennoch unterstützt GVIM die native Code-Vervollständigung für C ++. In Kombination mit der ctags- Bibliothek und einer Plug-in-ähnlichen Tagliste ist dies fast eine IDE.

Eigentlich hat mich ein Artikel von Armin Ronacher dazu gebracht. Schauen Sie sich vor dem Lesen des Textes die Screenshots am Ende an!

Müssen Sie zuerst kompilieren, bevor Sie (Syntax-) Fehler erhalten?

Ja. Dies gilt jedoch auch für Visual Studio, nicht wahr (ich habe noch nie Whole Tomato verwendet)? Natürlich zeigt die Syntaxhervorhebung nicht übereinstimmende Klammern an, aber das ist alles.

und wie debuggen Sie (denken Sie wieder an Haltepunkte usw.)?

Ich benutze gdbdas Kommandozeilen-Tool. Es gibt auch ein grafisches Frontend namens DDD. gdbist ein modernes Debugging-Tool und kann alles, was Sie in einer IDE tun können. Das einzige, was mich wirklich nervt, ist das Lesen einer Stapelverfolgung, da Zeilen nicht eingerückt oder formatiert sind, sodass es wirklich schwierig ist, die Informationen zu scannen, wenn Sie viele Vorlagen verwenden (was ich auch tue). Diese überladen aber auch die Stapelverfolgung in IDEs.

Wie gesagt, ich hatte das 'Vergnügen', meine ersten Schritte in der Java-Programmiersprache mit Windows Notepad und dem Kommandozeilen-Java-Compiler in der High School zu setzen, und es war ... ein Albtraum! sicherlich, wenn ich es mit anderen Programmierkursen vergleichen konnte, hatte ich damals, wo wir anständige IDEs hatten

Sie sollten nicht einmal versuchen, einen modernen Editor mit allen Funktionen wie Emacs oder GVIM mit Notepad zu vergleichen. Notepad ist eine verschönerte TextBoxSteuerung, und das macht wirklich den Unterschied. Darüber hinaus ist das Arbeiten an der Befehlszeile unter Linux und Windows eine ganz andere Erfahrung. Das Windows cmd.exeist stark verkrüppelt. PowerShell ist viel besser.

/ EDIT: Ich sollte ausdrücklich erwähnen, dass GVIM die Bearbeitung von Registerkarten hat (wie beim Browsen mit Registerkarten, nicht Tabs-vs-Leerzeichen)! Ich habe ewig gebraucht, um sie zu finden, obwohl sie überhaupt nicht versteckt sind. Geben Sie beim Öffnen oder Erstellen einer neuen Datei einfach :tabestatt einfach :eein, und GVIM erstellt eine neue Registerkarte. Das Wechseln zwischen Registerkarten kann mit dem Cursor oder mehreren verschiedenen Verknüpfungen erfolgen (je nach Plattform). Die Taste gt(Typ g, dann tim Befehlsmodus) sollte überall funktionieren und springt zur nächsten Registerkarte oder Tab-Nr. n wenn eine Nummer angegeben wurde. Geben Sie ein :help gt, um weitere Hilfe zu erhalten.

Konrad Rudolph
quelle
@confuzatron: Nein, ich benutze gdb aus mehreren Gründen. Am wichtigsten ist, dass ich normalerweise ohne X-Server arbeite. Außerdem ist mir etwas unangenehm, dass DDD seit geraumer Zeit kein Update mehr gesehen hat. Auf der anderen Seite hat sich die Projektverantwortung gerade geändert, und es scheinen Änderungen im Gange zu sein.
Konrad Rudolph
Vielen Dank für die Registerkarte info wrt gvim, nie neu, dass :)
Letholdrus
VS2010 hebt Syntaxfehler ohne Kompilierung hervor.
Candy Chiu
@Candy true, VS2010 hat diesbezüglich viele Änderungen vorgenommen und erweiterte Funktionen für die Hintergrundkompilierung hinzugefügt. In der Zwischenzeit hat gvim aber auch viele Funktionen über Plugins hinzugefügt. Insbesondere können Sie clang_completejetzt wahrscheinlich Syntaxfehler-Hervorhebungen ohne Kompilierung über das Plugin erhalten. Diese Antwort stammt aus dem Jahr 2009 und einige Teile sind veraltet. Aber es gab Verbesserungen auf allen Seiten, so dass es mehr oder weniger ausgeglichen wird.
Konrad Rudolph
25

Eine Antwort nicht zu wiederholen, aber ich denke, ich kann ein bisschen mehr hinzufügen.

Slickedit ist eine ausgezeichnete IDE.

Es unterstützt große Codebasen gut, ohne die Indizierung zu verlangsamen oder zu verbringen. (Dies ist ein Problem, das ich mit Eclipse's CDT hatte). Die Geschwindigkeit von Slickedit ist wahrscheinlich das Schönste daran.
Die Code-Vervollständigung funktioniert gut und es gibt eine Vielzahl von Optionen für Dinge wie automatische Formatierung, Verschönerung und Umgestaltung.
Es hat integriertes Debugging.
Es hat Plug-In-Unterstützung und eine ziemlich aktive Community, die sie erstellt.
Theoretisch sollten Sie in der Lage sein, sich gut in Leute zu integrieren, die das traditionelle Makefile-Zeug machen, da Sie so ein Projekt direkt aus einem erstellen können, aber das funktionierte nicht so reibungslos, wie ich es mir gewünscht hätte, als ich es ausprobiert habe.
Zusätzlich zu Linux gibt es Mac- und Windows-Versionen, falls Sie diese benötigen.

rck
quelle
23

Als alter UNIX-Typ benutze ich immer Emacs. Aber das hat eine ziemlich steile und lange Lernkurve, daher bin ich mir nicht sicher, ob ich es Neulingen empfehlen kann.

Es gibt wirklich keine "gute" IDE für Linux. Eclipse ist nicht sehr gut für C / C ++ (CDT verbessert sich, ist aber noch nicht sehr nützlich). Den anderen fehlen alle Funktionen, nach denen Sie suchen werden.

Es ist wirklich wichtig zu lernen, wie alle einzelnen Tools (gcc, make, gdb usw.) funktionieren. Nachdem Sie dies getan haben, ist die Vorgehensweise in Visual Studio möglicherweise sehr einschränkend.

Kristopher Johnson
quelle
Eclipse CDT "noch nicht sehr nützlich?" Ausarbeitung wäre hilfreich. Ich finde es äußerst nützlich (und einfach zu bedienen).
John Zwinck
"noch nicht sehr nützlich": Autocomplete funktioniert oft nicht, das Navigieren zu Deklarationen oder die Verwendung von Funktionen funktioniert nicht, Syntaxhervorhebung funktioniert nicht immer, Refactoring funktioniert nicht usw. Es ist wenig besser als vi. Die GDB-Frontend-Benutzeroberfläche ist meiner Meinung nach das einzige, was es überhaupt wert ist, verwendet zu werden.
Kristopher Johnson
Ich habe nicht wirklich versucht, mit dem CDT umzugestalten, aber die anderen Dinge scheinen zu funktionieren. Ich werde bemerken, dass ich Eclipse mit einigen ziemlich großen Konfigurationsparametern für die maximale Speichernutzung ausführe (ich habe 8-12 GB RAM), aber es scheint in Ordnung zu sein.
John Zwinck
Als ich das letzte Mal Eclipse CDT ausprobiert habe, hat der Syntax- / Semantik-Parser für die automatische Vervollständigung die gesamte IDE bei jedem Aufruf für 8 Sekunden eingefroren. Es machte das ganze Feature nutzlos. Ich kann nicht glauben, dass das Ding nicht in einem eigenen Thread lief. Das war vor zwei Jahren, also ist es hoffentlich jetzt behoben. (richtig?)
Ich finde CDT großartig für meine Streifzüge in QT und Boost. Unter Windows mit Mingw gibt es Probleme, aber in einer geeigneten Posix-Umgebung funktioniert die automatische Vervollständigung hervorragend! Das Navigieren zu Erklärungen ist eigentlich das einzige krasse Loch. Aber wenn man bedenkt, dass C ++ mehrere identische Deklarationen haben kann, bin ich nicht überrascht. Dies ist ein schwieriger zu lösendes Problem als in Java.
Chris K
18

Checkout Netbeans ist in Java geschrieben, sodass Sie unabhängig von Ihrem Betriebssystem dieselbe Umgebung haben und viel mehr als nur C ++ unterstützen.

Ich werde nicht versuchen, Sie zu überzeugen, weil ich denke, dass IDEs eine sehr persönliche Wahl sein können. Für mich verbessert es meine Produktivität, indem es schnell ist, die Sprachen unterstützt, in denen ich codiere, und die Standardfunktionen bietet, die Sie von einer IDE erwarten würden.

Steve M.
quelle
5
Ich kann nur meine +1 hinzufügen. netbeans hat den besten C ++ - Sprachparser, den ich in einer Idee gesehen habe; schlägt Eclipse's CDT.
Johan Boulé
18

Nur eine kurze Antwort auf diese Frage ...

Es ist einen Monat her, seit ich angefangen habe, Vim als mein Haupt-GUI-Tool für die Programmierung von C ++ unter Linux zu verwenden. Anfangs war die Lernkurve zwar etwas steil, aber nach einer Weile und mit den richtigen Optionen und laufenden Skripten hatte ich wirklich den Dreh raus!

Ich mag die Art und Weise, wie Sie Vim so gestalten können, dass es Ihren Bedürfnissen entspricht. Fügen Sie einfach Schlüsselzuordnungen hinzu / ändern Sie sie, und Vim wird zu einer hochproduktiven 'IDE'.

Die Toolchain zum Erstellen und Kompilieren eines C ++ - Programms unter Linux ist ebenfalls sehr intuitiv. make und g ++ sind die Werkzeuge, die Sie verwenden werden.

Der Debugger ddd ist jedoch nicht wirklich so gut, aber vielleicht liegt das daran, dass ich nicht die Zeit hatte, ihn richtig zu beherrschen.

Für alle, die eine gute C ++ - IDE unter Linux suchen oder suchen, genau wie ich, liegt Ihre beste Wahl in den verfügbaren Standardtools unter Linux selbst (Vim, g ++, ddd), und Sie sollten wirklich zumindest versuchen, diese zu verwenden sie, bevor sie nach etwas anderem suchen ...

Zu guter Letzt möchte ich Konrad wirklich für seine Antwort hier danken. Es hat mir wirklich geholfen, mich in der Linux-Entwicklungsumgebung zurechtzufinden. Danke!

Ich schließe diese Frage auch nicht , damit die Leute immer noch reagieren oder vielleicht sogar neue Vorschläge oder Ergänzungen zu den bereits wirklich schönen Antworten hinzufügen können ...

sven
quelle
Können Sie IntelliSense-ähnliche Funktionen in Vim + ctags verwenden? Nicht wirklich nur automatisch vervollständigen, sondern kontextsensitive Informationen wie Parameterliste für Funktion usw.?
kizzx2
@ kizzx2: Ja , es gibt viele Möglichkeiten .
Fred Nurk
12

Die kürzere Antwort lautet: Wählen Sie einen beliebigen "Editor" aus und debuggen Sie Ihre Anwendung mithilfe der GDB-Konsole oder eines einfachen GDB-Frontends. Die Debugger kommen mit ausgefallenen IDEs wie Netbeans Sucks für C / C ++. Ich verwende Netbeans als Editor und Insight und GDB-Konsole als Debugger.

Mit Einsicht haben Sie eine schöne GUI und die rohe Kraft von GDB.

Sobald Sie sich an GDB-Befehle gewöhnt haben, werden Sie es lieben, da Sie Dinge tun können, die Sie mit einer GUI niemals tun können. Sie können sogar Python als Skriptsprache verwenden, wenn Sie GDB 7 oder eine neuere Version verwenden.

Die meisten Leute hier haben den "Redakteuren" der IDEs mehr Aufmerksamkeit geschenkt. Wenn Sie jedoch ein großes Projekt in C / C ++ entwickeln, können Sie leicht mehr als 70% Ihrer Zeit mit den "Debuggern" verbringen. Die Debugger der ausgefallenen IDEs sind mindestens 10 Jahre hinter Visual Studio zurück. Netbenas verfügt beispielsweise über sehr ähnliche Schnittstellen zu Visual Studio. Der Debugger weist jedoch gegenüber Visual Studio eine Reihe von Nachteilen auf.

  1. Es ist sehr langsam, selbst ein Array mit nur wenigen hundert Elementen anzuzeigen
  2. Keine Hervorhebung für geänderten Wert (Standardmäßig zeigt Visual Studio geänderte Werte in den Überwachungsfenstern in Rot an.)
  3. Sehr eingeschränkte Fähigkeit, Gedächtnis zu zeigen.
  4. Sie können den Quellcode nicht ändern und dann weiter ausführen. Wenn das Auftreten eines Fehlers lange dauert, möchten Sie die Quelle ändern und die Änderungen live anwenden und Ihre Anwendung weiter ausführen.
  5. Sie können die auszuführende "nächste Anweisung" nicht ändern. In Visual Studio können Sie mit "Set Next Statement" ändern, wie Ihre Anwendung ausgeführt wird. Diese Funktion kann zwar Ihre Anwendung zum Absturz bringen, wenn sie nicht ordnungsgemäß verwendet wird, spart Ihnen jedoch viel Zeit. Wenn Sie beispielsweise festgestellt haben, dass der Status Ihrer Anwendung nicht korrekt ist, Sie jedoch nicht wissen, was die Probleme verursacht hat, möchten Sie möglicherweise einen bestimmten Bereich Ihrer Quellcodes erneut ausführen, ohne Ihre Anwendung neu zu starten.
  6. Keine integrierte Unterstützung für STL wie Vektor, Liste, Deque und Karte usw.
  7. Keine Beobachtungspunkte. Sie benötigen diese Funktion, wenn Sie Ihre Anwendung genau an dem Punkt stoppen müssen, an dem eine Variable geändert wird. Intel-basierte Computer verfügen über Hardware-Überwachungspunkte, damit die Überwachungspunkte Ihr System nicht verlangsamen. Es kann viele Stunden dauern, bis einige schwer zu findende Fehler gefunden werden, ohne Überwachungspunkte zu verwenden. "Visual Studio" nennt "Überwachungszeiger" "Data BreakPoint".

Die Liste kann viel länger sein.

Ich war so frustriert über die Nachteile der Netbeans oder anderer ähnlicher IDEs, dass ich anfing, GDB selbst zu lernen. Ich fand GDB selbst sehr mächtig. GDB hat nicht alle oben genannten "Nachteile". Tatsächlich ist GDB sehr leistungsfähig und in vielerlei Hinsicht sogar besser als Visual Studio. Hier zeige ich Ihnen nur ein sehr einfaches Beispiel.

Zum Beispiel haben Sie ein Array wie:

struct IdAndValue
{
  int ID;
  int value;
};


IdAndValue IdAndValues[1000];

Wenn Ihre Anwendung beendet wird und Sie die Daten in IdAndValues ​​untersuchen möchten. Wenn Sie beispielsweise die Ordnungszahlen und Werte für eine bestimmte "ID" im Array suchen möchten, können Sie ein Skript wie das folgende erstellen:

define PrintVal 
set $i=0
printf "ID = %d\n", $arg0
while $i<1000
  if IdAndValues[$i].ID == $arg0
    printf "ordinal = %d, value = %d\n", $i, IdAndValues[$i].vaue
    set $i++
  end
end
end

Sie können alle Variablen in Ihrer Anwendung im aktuellen Kontext, Ihre eigenen Variablen (in unserem Beispiel $ i), übergebene Argumente (in unserem Beispiel $ arg0) und alle GDB-Befehle (integriert oder benutzerdefiniert) verwenden ).

Verwenden Sie PrintVal 1 an der GDB-Eingabeaufforderung, um Werte für ID "1" auszudrucken.

NetBeans wird übrigens mit einer GDB-Konsole geliefert, aber wenn Sie die Konsole verwenden, können Sie Netbeans zum Absturz bringen. Und ich glaube, deshalb ist die Konsole in NetBeans standardmäßig ausgeblendet

Charles Zhang
quelle
Guter Punkt. Leider hat GDB eine extrem steile Lernkurve. Ich benutze es seit Jahren und habe noch nie Makros verwendet, und (obwohl ich weiß, dass dies über Makros möglich ist !) Jeder STL-Code, den ich darauf wirf, kann nicht besser als in modernen IDEs debuggt werden.
Konrad Rudolph
Ich habe 2 Tage damit verbracht, die meisten Befehle in GDB zu beherrschen. Sobald Sie die rohe Kraft von GBD kennen, werden Sie nie mehr zurückblicken. Sie sparen viel Zeit, wenn Sie die schwer zu findenden Fehler beheben.
Charles Zhang
11

Ich benutze " Geany ", das bisher gut gefunden wurde, seine schnelle und leichte IDE.

Zu Geanys Merkmalen gehören :

  • Code falten
  • Sitzungsspeicherung
  • Grundlegende IDE-Funktionen wie Syntaxhervorhebung, Registerkarten, automatische Einrückung und Code-Vervollständigung
  • Einfaches Projektmanagement
  • System erstellen
  • Farbwähler (überraschend praktisch während der Webentwicklung)
  • Embedded Terminal Emulation
  • Tipps anrufen
  • Symbollisten
  • Automatische Vervollständigung gängiger Konstrukte (z. B. if, else, while usw.)
TheCottonSilk
quelle
10

Wenn Sie Eclipse für Java mögen, empfehle ich Eclipse CDT. Obwohl die C / C ++ - Unterstützung nicht so leistungsfähig ist wie für Java, bietet sie dennoch die meisten Funktionen. Es hat eine nette Funktion namens Managed Project, die die Arbeit mit C / C ++ - Projekten erleichtert, wenn Sie keine Erfahrung mit Makefiles haben. Sie können jedoch weiterhin Makefiles verwenden. Ich mache C- und Java-Codierung und bin sehr zufrieden mit CDT. Ich entwickle die Firmware für ein eingebettetes Gerät in C und eine Anwendung in Java, die mit diesem Gerät kommuniziert, und es ist wirklich schön, für beide dieselbe Umgebung zu verwenden. Ich denke, das macht mich wahrscheinlich produktiver.

jassuncao
quelle
9

Ich finde es toll, dass die Leute die Anfrage in der ursprünglichen Frage nach einer IDE völlig verpassen. Linux ist KEINE IDE. Das ist einfach nicht das, was diese Worte bedeuten. Ich habe c und c ++ mit vi und gcc und make gelernt und ich sage nicht, dass sie keine geeigneten Tools sind, aber sie sind KEINE IDE. Selbst wenn Sie ausgefeiltere Tools wie vim oder emacs oder einen beliebigen Editor verwenden, ist das Eingeben von Befehlen in einer Befehlszeile keine IDE.

Außerdem wissen Sie alle, dass make als Teil von Visual Studio existiert, oder? Die Idee, dass eine IDE "einschränkend" ist, ist einfach albern, wenn Sie die IDE verwenden können, um einige Dinge zu beschleunigen, und dennoch bei Bedarf auf Befehlszeilen zurückgreifen können.

Alles in allem würde ich vorschlagen, wie einige oben, Codeblöcke auszuprobieren. Es hat eine anständige Code-Hervorhebung, eine ziemlich mühelose Möglichkeit, ein Projekt zu erstellen, es zu codieren, auszuführen usw., das ist der Kern einer echten IDE und scheint ziemlich stabil zu sein. Das Debuggen ist zum Kotzen ... Ich habe noch nie einen anständigen interaktiven Debugger in einer Linux / Unix-Variante gesehen. gdb ist es nicht. Wenn Sie an das Debuggen im Visual Studio-Stil gewöhnt sind, haben Sie ziemlich viel Pech.

Wie auch immer, ich werde meine Sachen packen, ich weiß, dass die Linux-Menge, die nur eine Ansicht hat, dies abschreien und mich in kürzester Zeit aus der Stadt rennen wird.

Irgendein Typ
quelle
Du hast einen Punkt. Es ist keine IDE, wie wir sie kennen. Es ist jedoch interessant, dass das OP für diese Antwort gestimmt hat! Meine Farben an den Mast nageln: Ich bin ein Fan von Kommandozeilen-Makefiles.
ScrollerBlaster
Endlich jemand, der ein Gehirn hat ... Ich denke, die anderen codieren nur triviale Dinge, wenn sie alles mit Emacs / Vim machen können.
Pippo
8

make + vim + gdb = eine großartige IDE

Matt Fichman
quelle
7

Ich mag die IDE von Ultimate ++ . Es verfügt über einige Funktionen, die für die Verwendung mit einer eigenen Bibliothek entwickelt wurden (was übrigens ein gutes Toolkit ist, wenn Sie weder GTK + noch QT kaufen möchten), funktioniert jedoch perfekt mit allgemeinen C ++ - Projekten. Es bietet eine anständige Code-Vervollständigung, eine gute Syntaxfarbe, integriertes Debugging und alle anderen Funktionen, die die meisten modernen IDEs unterstützen.

Dguaraglia
quelle
Beeindruckend! In Bezug auf die Screenshots sieht das wirklich toll aus! Ich werde es auf jeden Fall versuchen. Weißt du, ob ich dafür bezahlen muss? (Das ist nicht ganz auf der Website ++ Ultimative löschen)
Nein, es ist kostenlos wie in "Rede", "Bier" und "Fahrt". Sie sind sogar ziemlich offen für das Akzeptieren von Patches und veröffentlichen sie sehr oft, so dass es so Open Source ist, wie es nur geht :)
dguaraglia
7

Ich schlage wirklich Codeblöcke vor . Es ist nicht so schwer wie Eclipse und unterstützt Visual Studio-Projekte.

DavidG
quelle
6

Vielleicht könnte das Linux Tools Project für Eclipse Ihre Anforderungen erfüllen?

Das Linux Tools-Projekt zielt darauf ab, Linux-Entwicklern eine voll funktionsfähige C- und C ++ - IDE zur Verfügung zu stellen. Wir bauen auf den Quellbearbeitungs- und Debugging-Funktionen des CDT auf und integrieren beliebte native Entwicklungstools wie GNU Autotools, Valgrind, OProfile, RPM, SystemTap, GCov, GProf, LTTng usw. Aktuelle Projekte umfassen LTTng-Trace-Viewer und -Analysatoren RPM .spec-Editor, Autotools-Build-Integration, ein Valgrind-Tool zur Analyse der Heap-Nutzung und Tools zur Erstellung von OProfile-Anrufprofilen.

Jean Hominal
quelle
6

Unter Linux gibt es viele IDEs:

Nach meiner Erfahrung sind Eclipse und Qt Creator die wertvollsten . Beide bieten alle "Standard" -Funktionen (dh automatische Vervollständigung, Syntaxhervorhebung, Debugger, Git-Integration). Es ist erwähnenswert, dass Eclipse auch Refactoring-Funktionen bietet, während Qt Creator die Integration mit Valgrind und die Unterstützung für die Bereitstellung auf Remote-Zielen bietet.

Auch die kommerzielle CLion IDE scheint sehr gut zu sein (aber ich habe sie nicht ausgiebig genutzt).

Claudio
quelle
5

Ich höre, dass Anjuta für Gnome-Benutzer ziemlich schlau ist. Ich habe ein bisschen mit KDevelop gespielt und es ist schön, aber irgendwie fehlt es an Eigenschaften. Code :: Blocks ist auch sehr vielversprechend, und das gefällt mir am besten.

wvdschel
quelle
5

Sun Studio Version 12 ist ein kostenloser Download (KOSTENLOSER und kostenpflichtiger Support verfügbar) - http://developers.sun.com/sunstudio/downloads/thankyou.jsp?submit=%A0FREE+Download%A0%BB%A0 .

Ich bin sicher, dass Sie Code-Vervollständigung und Debugging-Unterstützung einschließlich Plugin-Unterstützung in dieser IDE haben.

Sun Studio ist sowohl für Linux als auch für Solaris verfügbar. Foren: http://developers.sun.com/sunstudio/community/forums/index.jsp . Sun Studio Linux-Foren: http://forum.sun.com/forum.jspa?forumID=855

Ich freue mich auf Ihr Feedback zu diesem Tool.

BR,
~ A.

anjanb
quelle
5

Ich habe zuvor Ultimate ++ IDE verwendet und es ist ziemlich gut.

Hernán
quelle
5

Und dann bemerkte ich, dass Sie dort einfach nicht so arbeiten *, und ich warf alles raus, verbrachte ein paar Tage damit, Handbücher zu lesen, meine Shell (Bash) einzurichten, eine GVIM-Umgebung einzurichten und die GCC / binutils-Toolchain zu lernen. machen und gdb und lebte glücklich bis ans Ende.

Ich stimme größtenteils zu, aber das Problem liegt auch in der Wahrnehmung: Wir vergessen, wie schwierig es war, in einer ausgewählten IDE (oder einer anderen Umgebung) produktiv zu werden. Ich finde IDEs (Visual Studio, NetBeans, Eclipse) in vielerlei Hinsicht erstaunlich umständlich.

Als alter UNIX-Typ benutze ich immer Emacs. Aber das hat eine ziemlich steile und lange Lernkurve, daher bin ich mir nicht sicher, ob ich es Neulingen empfehlen kann.

Ich würde das unterstützen. Verwenden Sie Emacs als meinen primären Editor sowohl unter Linux als auch unter MSW (XP2, W2K). Ich würde nicht zustimmen, dass es eine steile Lernkurve hat, würde aber sagen, dass es aufgrund der großen Anzahl von Funktionen eine lange Lernkurve hat. Sie können innerhalb kurzer Zeit produktiv sein, aber wenn Sie möchten, können Sie in den kommenden Jahren neue Funktionen davon erlernen.

Erwarten Sie jedoch nicht, dass alle Funktionen von Emacs in Dropdown-Menüs verfügbar sind. Es gibt einfach zu viele Funktionen, um sie dort zu finden.

Wie ich bereits sagte, habe ich GNU Emacs jahrelang für MSW verwendet. Und es hat immer gut mit Visual Studio funktioniert, bis ich auf 2008 "aktualisiert" habe. Jetzt verzögert es sich manchmal um viele Sekunden, bevor Dateien von der Festplatte aktualisiert werden. Der Hauptgrund für die Bearbeitung im VS-Fenster ist die Funktion zum Vervollständigen des Codes "Intellisense".

NVRAM
quelle
5

Obwohl ich Vim benutze, verwenden einige meiner Mitarbeiter SlickEdit, was ziemlich gut aussieht. Ich bin mir beim integrierten Debugging nicht sicher, da wir dies in unserem speziellen Projekt sowieso nicht tun könnten.

SlickEdit bietet eine gute Unterstützung für das Navigieren in großen Codebasen mit Querverweisen und Tag-Jumping. Natürlich hat es auch die grundlegenden Dinge wie Syntaxhervorhebung und Code-Vervollständigung.

Greg Hewgill
quelle
5

Ich verwende Eclipse CDT und Qt Creator (für Qt-Anwendungen).

Das sind meine Vorlieben. Es ist eine sehr suggestive Frage und es gibt so viele Antworten wie es Entwickler gibt. :) :)

Etienne Savard
quelle
4

SlickEdit. Ich benutze und liebe SlickEdit seit 2005, sowohl unter Windows als auch unter Linux. Ich habe auch Erfahrung in Visual Studio (5, 6, 2003, 2005) und nur mit Emacs und Kommandozeile. Ich benutze SlickEdit mit externen Makefiles, einige meiner Teamkollegen verwenden SlickEdit, andere Emacs / vi. Ich benutze nicht den integrierten Debugger, die integrierte Versionskontrolle und das integrierte Build-System: Ich finde im Allgemeinen zu viel Integration, um wirklich schmerzhaft zu sein. SlickEdit ist robust (sehr wenige Fehler), schnell und intuitiv. Es ist wie ein deutsches Auto, ein Fahrerauto.

Die neuesten Versionen von SlickEdit scheinen viele Funktionen zu bieten, die mich nicht interessieren. Ich mache mir ein wenig Sorgen, dass das Produkt in Zukunft aufgebläht und verdünnt wird. Im Moment (ich benutze V13.0) ist es großartig.

Radim Cernej
quelle
3

Für mich scheint Ultimate ++ die beste Lösung zu sein, um ein Cross-OS-Programm zu schreiben

IonLupascu
quelle
3

Wenn Sie vim lange Zeit verwendet haben, sollten Sie dies tatsächlich als Ihre IDE festlegen. Es sind viele Addons verfügbar. Ich fand einige davon ziemlich nützlich und habe sie hier zusammengestellt.

Und vieles mehr in der vi / vim Tips & Tricks-Serie da drüben.

Der Nerd
quelle