IDE C ++ pour Linux? [fermé]

209

Je veux étendre mes horizons de programmation à Linux. Un bon ensemble d'outils de base fiable est important, et quoi de plus basique qu'un IDE?

Je pourrais trouver ces sujets SO:

Je ne cherche pas un IDE léger . Si un IDE vaut de l'argent, alors je le paierai, donc il n'est pas nécessaire qu'il soit gratuit.

Ma question, alors:

Quel bon IDE de programmation C ++ est disponible pour Linux?

Les minimums sont assez standard: mise en évidence de la syntaxe, complétion du code (comme intellisense ou son équivalent Eclipse) et débogage intégré (par exemple, points d'arrêt de base).

Je l'ai cherché moi-même, mais il y en a tellement qu'il est presque impossible de séparer le bon des mauvais à la main, surtout pour quelqu'un comme moi qui a peu d'expérience en codage C ++ sous Linux. Je sais qu'Eclipse prend en charge C ++ , et j'aime vraiment cet IDE pour Java, mais est-ce bon pour C ++ et y a-t-il quelque chose de mieux?

Le deuxième article contient en fait de bonnes suggestions, mais ce qui me manque, c'est ce qui rend l'IDE suggéré si bon pour l'utilisateur, quels sont ses (dés) avantages?

Ma question devrait donc être:

Quel IDE proposez-vous (compte tenu de vos expériences), et pourquoi?

Peter Mortensen
la source
1
C'est, je pense, la 4ème question "Quel IDE dois-je utiliser sous Linux" en un jour ou deux.
Ben Collins
Peut-être que vous devriez regarder la date à laquelle cette question a été posée ... ou pointer les nouvelles questions ici
sven
Dans la dernière version, Eclipse a intégré eclipse.org/linuxtools dans son train de versions - ce projet vise à faire d'Eclipse un IDE C / C ++ plus complet sur Linux en intégrant des outils spécifiques à Linux.
Jean Hominal

Réponses:

259

Initialement: confusion

Lors de l'écriture de cette réponse, j'avais récemment changé de Visual Studio (avec des années d'expérience) vers Linux et la première chose que j'ai faite a été d'essayer de trouver un IDE raisonnable. À l'époque, c'était impossible: aucun bon IDE n'existait.

Epiphanie: UNIX est un IDE. Tout. 1

Et puis j'ai réalisé que l'IDE sous Linux est la ligne de commande avec ses outils:

  • Vous configurez d'abord votre shell
  • et votre éditeur; choisissez votre poison - les deux sont à la pointe de la technologie:

Selon vos besoins, vous devrez ensuite installer et configurer plusieurs plugins pour que l'éditeur fonctionne correctement (c'est la seule partie ennuyeuse). Par exemple, la plupart des programmeurs sur Vim bénéficieront du plugin YouCompleteMe pour l'autocomplétion intelligente.

Une fois cela fait, le shell est votre interface de commande pour interagir avec les différents outils - Débogueurs (gdb), Profilers (gprof, valgrind), etc. Vous configurez votre environnement de projet / build en utilisant Make , CMake , SnakeMake ou l'un des divers alternatives. Et vous gérez votre code avec un système de contrôle de version (la plupart des gens utilisent Git ). Vous utilisez également tmux (auparavant également screen) pour multiplexer (= pensez à plusieurs fenêtres / onglets / panneaux) et conservez votre session de terminal.

Le fait est que, grâce au shell et à quelques conventions d'écriture d'outils, tous s'intègrent les uns aux autres . Et de cette façon, le shell Linux est un environnement de développement véritablement intégré , complètement à égalité avec d'autres IDE modernes. (Cela ne signifie pas que les IDE individuels n'ont pas de fonctionnalités qui manquent à la ligne de commande, mais l'inverse est également vrai.)

À chacun son

Je ne peux pas surestimer la qualité du fonctionnement du flux de travail ci-dessus une fois que vous avez pris l'habitude. Mais certaines personnes préfèrent simplement les éditeurs graphiques, et depuis que cette réponse a été écrite à l'origine, Linux a acquis une suite d'excellents IDE graphiques pour plusieurs langages de programmation différents (mais pas, à ma connaissance, pour C ++). Essayez-les même si, comme moi, vous finissez par ne pas les utiliser. Voici juste une petite sélection biaisée:

Gardez à l'esprit que cette liste est loin d'être complète.


1 J'ai volé ce titre dans le commentaire de dsm.

2 Je parlais ici de Vim. Et bien que Vim simple soit toujours plus que capable, Neovim est un redémarrage prometteur, et il a modernisé quelques vieilles verrues.

Konrad Rudolph
la source
223
Je suis fortement en désaccord. une idée décente est importante, peu importe sur quoi vous travaillez. il augmente considérablement la productivité. j'utilise des blocs de code et je trouve que revenir au VI est presque impossible. J'ai codé sur Mac, Win et Linux, et bien que je trouve que Visual Studio soit le meilleur IDE, les blocs de code se rapprochent.
DavidG
35
David, peut-être pourriez-vous détailler (votre propre réponse…) ce qui vous manque exactement dans la chaîne d'outils que j'ai décrite qu'un IDE fournit. Comme je l'ai dit, je viens d'un solide background IDE et mon augmentation de productivité était exactement l'inverse de la vôtre.
Konrad Rudolph
48
Quel support de refactoring propose Vim? Dans Eclipse (qui fonctionne sous Linux), je peux changer le nom de n'importe quelle méthode Java que je souhaite, même si elle est appelée à 300 endroits. Pouvez-vous le faire facilement à Vim?
quant_dev
25
quant_dev: le refactoring nécessite une analyse du code source d'une certaine manière. Pour autant que je sache, aucun module VIM ne fait cela, donc la réponse à votre question est «aucun». C'est l'une des raisons de préférer un IDE pour les langages centrés sur l'IDE tels que Java. Étant donné que la prise en charge de la refactorisation (etc) pour C ++ est si minime de toute façon (même dans les IDE), cela ne s'applique pas à C ++.
Konrad Rudolph
11
@hasen: oh mais de grandes parties peuvent . Renommer en fonction de la portée, par exemple. Et croyez-moi, c'est grand . Et Ecplise (par exemple) peut économiser beaucoup de travail ici.
Konrad Rudolph
86

Mon préféré est l' IDE CodeLite 2.x.

voir: http://www.codelite.org

La décision d'utiliser CodeLite était basée sur une recherche concernant l'IDE C ++ suivant pour Linux:

  • Eclipse Galileo avec plugin CDT
  • NetBeans 6.7 (qui est également la base de l'IDE SunStudio)
  • KDevelop4
  • CodeBlocks 8.02
  • CodeLite 2.x

Après tout ce que j'ai décidé d'utiliser CodeLite 2.x .

Ci-dessous, j'ai énuméré quelques avantages et inconvénients concernant les IDE C ++ mentionnés. Veuillez noter que cela ne reflète que mon opinion personnelle!

EDIT : quel dommage que SOF ne supporte pas les tableaux, donc je dois écrire dans les paragraphes ...

Eclipse Galileo avec plugin CDT

Avantages:

  • raisonnable rapide
  • prend également en charge Java, Perl (avec plugin EPIC)
  • couramment utilisé et bien entretenu
  • également disponible pour d'autres versions du système d'exploitation (Windows, MacOS, Solaris, AIX (?))

Les inconvénients:

  • L'interface graphique est très déroutante et quelque peu incohérente - pas très intuitive du tout
  • poids lourd
  • Prise en charge uniquement CVS (AFAIK)

NetBeans 6.7 (notez que c'est également la base de l'IDE SunStudio)

Avantages:

  • l'une des interfaces graphiques les plus intuitives que j'ai jamais vues
  • prend également en charge Java, Python, Ruby
  • intègre CVS, SVN, Mercurial
  • couramment utilisé et bien entretenu
  • également disponible pour d'autres versions du système d'exploitation (Windows, MacOS, Solaris)

Les inconvénients:

  • extrêmement lent
  • poids lourd
  • utilise des espaces pour l'indentation, ce qui n'est pas la politique de mon travail. Je suis sûr que c'est configurable, mais je n'ai pas pu savoir comment

KDevelop4 (note: je n'ai pas beaucoup testé dessus)

Avantages:

  • couramment utilisé sur Linux
  • intègre CVS, SVN, Mercurial

Les inconvénients:

  • l'interface graphique semble un peu démodée
  • poids lourd
  • très spécifique à l'environnement KDE

CodeBlocks 8.02 (note: je n'ai pas fait beaucoup de tests dessus)

Avantages:

  • raisonnable rapide

Les inconvénients:

  • l'interface graphique semble quelque peu démodée (bien qu'elle ait un bel écran de démarrage)
  • les polices dans l'éditeur sont très petites
  • certaines icônes (par exemple les icônes liées au débogueur qui démarrent / progressent) sont très petites
  • pas d'intégration de contrôle de source

CodeLite 2.x (remarque: c'est mon préféré)

Avantages:

  • la meilleure interface graphique intuitive et moderne que j'ai vue sur Linux
  • poids léger
  • raisonnable rapide
  • intègre SVN
  • également disponible sur d'autres versions du système d'exploitation (Windows, MacOS, Solaris (?))

Les inconvénients:

  • pas d'intégration CVS (c'est important pour moi car je dois l'utiliser au travail)
  • pas de support pour Java, Perl, Python (ce serait bien d'avoir)
anon
la source
14
Eclispe prend en charge Hg, Git, SVN et d'autres via des plugins. Et les écrans de démarrage / splash sucent d'énormes boules. Ils absorbent des ressources et offrent très peu d'avantages. Et ils apparaissent généralement devant tout ce sur quoi je travaille en attendant que l'application se charge. Les applications portables et Eclipse doivent s'en débarrasser.
Chris K
4
Codelite a obtenu le même raccourci clavier que Visual Studio pour le débogage, ce qui le rend très convivial pour les toxicomanes Visual.
Raoul Supercopter
Peut-être battez-vous un vieux cheval ici, mais l'interface graphique de l'OMI éclipse est vraiment inégalée. Oui, il est difficile d'apprendre au début, mais c'est un peu comme Vi où la productivité commence à monter en flèche après avoir gravi la courbe d'apprentissage abrupte. Pour prouver un point, essayez d'appuyer sur Ctrl + 3 - l'une des fonctionnalités très impressionnantes dans eclipse IMO.
kizzx2
"Inconvénients: utilise des espaces pour l'indentation [...] Je suis sûr que cela est configurable, mais je n'ai pas pu savoir comment faire." Cela montre que vous n'avez pas vraiment utilisé l'outil, sinon, vous auriez finalement trouvé l'option.
Johan Boulé
5
CodeLite est incroyable, comme mâcher de la gomme à glace dentyne. Cela laissera un goût frais et mentholé dans votre bouche. Eclipse, tout en étant caractéristique, vous donne également ce vomi après le goût lorsque vous l'utilisez. Je sais que cela semble enfantin à dire, mais c'est vraiment la meilleure métaphore pour expliquer la "sensation" de les utiliser. Je suis sûr que d'autres seront d'accord avec moi.
Didier A.
75
  1. Code :: Blocs
  2. Eclipse CDT

Bientôt, vous constaterez que les IDE ne sont pas suffisants, et vous devrez tout de même apprendre la chaîne d'outils GCC (ce qui n'est pas difficile, du moins l'apprentissage des fonctionnalités de base). Mais pas de mal à réduire la douleur de transition avec les IDE, l'OMI.

Imran
la source
+1 pour les blocs de code et oui, vous voudrez certainement apprendre au moins comment compiler et exécuter vos programmes à partir d'un shell, car code :: blocks a quelques imperfections.
Earlz
Eclipse n'est pas du tout léger IMHO, Code :: Blocks ... juste
rubenvb
7
-1 pour les blocs de code. -1 pour l'éclipse. Ils ont tous deux changé leur interface utilisateur lors du débogage. Au point où un utilisateur novice se sent généralement perdu. Ils ne peuvent pas tous les deux déboguer fork. Ils ont tous deux des problèmes désagréables avec l'intégration SVN / CVS. (La dernière Eclipse en tandem avec Subclipse est cassée dans Gnome le 28/04/11 et plante toutes les 10 minutes). La configuration du contrôle de source est un cauchemar et l'intégration avec ces IDE est tout aussi difficile.
bleepzter
4
@bleepzter -1 pour utiliser SVN / CVS pour commencer;)
OneOfOne
1
Mercurial, Git et Bazaar qui sont largement supérieurs dans tous les sens.
OneOfOne
66

Une réponse rapide, juste pour ajouter un peu plus de connaissances à ce sujet:
vous devez absolument consulter NetBeans . Netbeans 6.7 présente les fonctionnalités suivantes:

  • Projets et modèles C / C ++: prend en charge la coloration syntaxique, l'achèvement automatique du code et l'indentation automatique.
  • Il a un débogueur C / C ++
  • Prend en charge les configurations de compilateur, Configuration Manager et prise en charge de Makefile (avec un assistant).
  • Il a une fenêtre Classes, une fenêtre Usages et une fenêtre de navigation de fichiers (ou panneau).
  • Une vue d'extension de macro , ainsi que des info-bulles .
  • Prise en charge du développement QT .

Je pense que c'est une substitution Visual Studio parfaite (et bien meilleure) et un très bon outil pour apprendre le C / C ++.

Bonne chance!

ramayac
la source
2
C'est aussi très bon pour c ++. Il a le meilleur analyseur de langue jamais.
Johan Boulé
1
J'ai apprécié Netbeans bien plus qu'Eclipse pour le développement c ++.
Thomas Langston
9
NetBeans est tellement plus agréable qu'Eclipse, je souhaite vraiment que plus de gens commencent à s'en rendre compte.
Didier A.
1
Après avoir combattu avec Eclipse pendant des semaines, j'ai trouvé cela, je suis passé à NetBeans et merci! Il a une interface plus agréable, est plus réactif, inuit et personnalisable. Beats Eclipse haut la main
Frederik
1
Un autre vote ici pour savoir combien NetBeans est meilleur qu'Eclipse. Il possède également de loin la meilleure émulation Vim (en tant que plugin) que j'ai jamais utilisée.
bien que
52

Au moins pour les projets spécifiques à Qt, le Qt Creator (de Nokia / Trolltech / Digia) est très prometteur.

Henrik Hartz
la source
10
Je l'utilise également pour des projets non-Qt.
Chance
C'est gentil. Je l'ai essayé et j'aime beaucoup.
Tyler Long
32

pourriez-vous clarifier un peu comment c'était pour vous, ce que vous deviez changer. Vous pourriez peut-être m'orienter dans la bonne direction en fournissant des liens vers les informations que vous avez utilisées.

Ma première source était en fait les manpages des outils . Tapez simplement

$ man toolname

sur la ligne de commande ( $voici une partie de l'invite, pas l'entrée).

Selon la plate-forme, ils sont assez bien écrits et peuvent également être trouvés sur Internet. Dans le cas de make, j'ai lu la documentation complète qui a pris quelques heures. En fait, je ne pense pas que ce soit nécessaire ou utile dans la plupart des cas, mais j'avais quelques exigences spéciales dans mes premières affectations sous Linux qui nécessitaient un makefile sophistiqué. Après avoir écrit le makefile, je l'ai donné à un collègue expérimenté qui a apporté quelques modifications et corrections mineures. Après cela, je savais à peu près make.

J'ai utilisé GVIM parce que j'avais une expérience préalable (mais pas beaucoup) là-bas, je ne peux rien dire du tout sur Emacs ou les alternatives. Je trouve que cela aide vraiment à lire le .gvimrcfichier de configuration d' autres personnes . Beaucoup de gens l'ont mis sur le Web. Voici le mien .

N'essayez pas de maîtriser tous les binutils à la fois, il y a trop de fonctions. Mais obtenez un aperçu général pour savoir où chercher lorsque vous aurez besoin de quelque chose à l'avenir. Vous devez cependant connaître tous les paramètres importants pour g++et ld(l'outil de liaison de GCC qui est appelé automatiquement , sauf en cas d' empêchement explicitement).

De plus, je suis curieux, avez-vous la complétion de code et la coloration syntaxique lorsque vous codez?

Mise en évidence de la syntaxe: oui, et bien meilleure que Visual Studio. La complétion de code: oui- ish . Tout d'abord, je dois admettre que je n'ai pas utilisé la complétion de code C ++ même dans Visual Studio car (par rapport à VB et C #) ce n'était pas assez bon. Je ne l'utilise pas souvent maintenant mais néanmoins, GVIM a un support de complétion de code natif pour C ++. Combiné avec la bibliothèque ctags et une liste de balises de type plug-in, c'est presque un IDE.

En fait, ce qui m'a permis de commencer, c'est un article d'Armin Ronacher. Avant de lire le texte, regardez les captures d'écran à la fin!

devez-vous d'abord compiler avant d'obtenir des erreurs (de syntaxe)?

Oui. Mais c'est la même chose pour Visual Studio, n'est-ce pas (je n'ai jamais utilisé Whole Tomato)? Bien sûr, la mise en évidence de la syntaxe vous montrera des crochets qui ne correspondent pas mais c'est à peu près tout.

et comment déboguez-vous (pensez à nouveau aux points d'arrêt, etc.)?

J'utilise gdbce qui est un outil en ligne de commande. Il y a aussi une interface graphique appelée DDD. gdbest un outil de débogage moderne et peut faire tout ce que vous pouvez faire dans un IDE. La seule chose qui m'agace vraiment est de lire une trace de pile car les lignes ne sont pas en retrait ou formatées, il est donc très difficile de scanner les informations lorsque vous utilisez beaucoup de modèles (ce que je fais). Mais ceux-ci encombrent également la trace de la pile dans les IDE.

Comme je l'ai dit, j'ai eu le «plaisir» de faire mes premiers pas dans le langage de programmation Java en utilisant le bloc-notes Windows et le compilateur Java en ligne de commande au lycée, et ce fut, .. wel un cauchemar! certainement quand je pouvais le comparer avec d'autres cours de programmation que j'avais à l'époque où nous avions des IDE décents

Vous ne devriez même pas essayer de comparer un éditeur moderne et complet comme Emacs ou GVIM au Bloc-notes. Le bloc-notes est un TextBoxcontrôle embelli , et cela fait vraiment toute la différence. De plus, travailler sur la ligne de commande est une expérience très différente sous Linux et Windows. Windows cmd.exeest gravement paralysé. PowerShell est bien meilleur.

/ EDIT: Je devrais mentionner explicitement que GVIM a une édition par onglets (comme dans la navigation par onglets, pas les tabulations contre les espaces)! Il m'a fallu beaucoup de temps pour les trouver, bien qu'ils ne soient pas du tout cachés. Tapez simplement :tabeau lieu de plain :elorsque vous ouvrez un fichier ou en créez un nouveau, et GVIM créera un nouvel onglet. La commutation entre les onglets peut être effectuée à l'aide du curseur ou de plusieurs raccourcis différents (selon la plateforme). La clé gt(type g, puis ten mode commande) devrait fonctionner partout, et passer à l'onglet suivant ou à l'onglet no. n si un nombre a été donné. Tapez :help gtpour obtenir plus d'aide.

Konrad Rudolph
la source
@confuzatron: Non, j'utilise gdb pour plusieurs raisons. Plus important encore, je travaille généralement sans aucun serveur X en cours d'exécution. De plus, je suis un peu mal à l'aise avec le fait que DDD n'a pas vu de mise à jour depuis assez longtemps. En revanche, l'appropriation du projet vient de changer et il semble y avoir des changements en cours.
Konrad Rudolph
Merci pour l'onglet info wrt gvim, jamais nouveau :)
Letholdrus
VS2010 met en évidence les erreurs de syntaxe sans compilation.
Candy Chiu
@Candy true, VS2010 a changé beaucoup de choses à cet égard et a ajouté des fonctionnalités avancées pour la compilation en arrière-plan. Mais gvim a également ajouté de nombreuses fonctionnalités via des plugins entre-temps. En particulier, vous pouvez probablement obtenir la mise en évidence des erreurs de syntaxe sans compilation via le clang_completeplugin maintenant. Cette réponse date de 2009 et certaines parties sont obsolètes. Mais il y a eu des améliorations de tous les côtés, donc cela se stabilise plus ou moins.
Konrad Rudolph
25

Sans répéter une réponse, mais je pense que je peux en ajouter un peu plus.

Slickedit est un excellent IDE.

Il supporte bien les grandes bases de code sans ralentir ni passer tout son temps à indexer. (C'est un problème que j'ai eu avec le cdt d'Eclipse). La vitesse de Slickedit est probablement la meilleure chose à ce sujet, en fait.
L'achèvement du code fonctionne bien et il existe une grande quantité d'options pour des choses comme le formatage automatique, l'embellissement et la refactorisation.
Il a un débogage intégré.
Il a un support de plug-in et une communauté assez active pour les créer.
En théorie, vous devriez être en mesure de bien vous intégrer aux gens qui font les trucs traditionnels de makefile, car cela vous permet de créer un projet directement à partir d'un seul, mais cela n'a pas fonctionné aussi bien que j'aurais aimé quand je l'ai essayé.
En plus de Linux, il existe des versions Mac et Windows, si vous en avez besoin.

rck
la source
23

En tant qu'ancien gars UNIX, j'utilise toujours Emacs. Mais cela a une courbe d'apprentissage assez abrupte et longue, donc je ne suis pas sûr de pouvoir le recommander aux nouveaux arrivants.

Il n'y a vraiment pas de "bon" IDE pour Linux. Eclipse n'est pas très bon pour C / C ++ (CDT s'améliore, mais n'est pas encore très utile). Les autres n'ont pas toutes les fonctionnalités que vous allez rechercher.

Il est vraiment important d'apprendre comment fonctionnent tous les outils individuels (gcc, make, gdb, etc.). Après cela, vous pouvez trouver la manière de faire Visual Studio très limitative.

Kristopher Johnson
la source
Eclipse CDT "pas encore très utile?" L'élaboration serait utile. Je le trouve extrêmement utile (et facile à utiliser).
John Zwinck
"pas encore très utile": la saisie semi-automatique ne fonctionne souvent pas, la navigation vers des déclarations ou des utilisations de fonctions ne fonctionne pas, la mise en évidence de la syntaxe ne fonctionne pas toujours, la refactorisation ne fonctionne pas, etc. C'est un peu mieux que d'utiliser vi. L'interface utilisateur GDB frontend est la seule chose qui en vaut la peine, IMHO.
Kristopher Johnson
Je n'ai pas vraiment essayé de refactoriser avec le CDT, mais les autres choses semblent fonctionner. Je noterai que j'exécute Eclipse avec quelques paramètres de configuration d'utilisation de la mémoire max assez gros (j'ai 8-12 Go de RAM), mais cela semble bien.
John Zwinck
La dernière fois que j'ai essayé Eclipse CDT, l'analyseur syntaxique / sémantique pour l'auto-complétion a fait figer l'ensemble de l'IDE pendant 8 secondes chaque fois qu'il a été invoqué. Cela a rendu toute la fonctionnalité inutile. Je ne peux pas croire que la chose ne fonctionne pas dans son propre fil. C'était il y a deux ans, donc il est à espérer qu'il soit corrigé maintenant. (à droite?)
Je trouve le CDT génial pour mes incursions dans QT et Boost. Sur Windows avec Mingw, il a ses problèmes, mais dans un environnement Posix approprié, la saisie automatique fonctionne très bien! La navigation vers les déclarations est en fait le seul trou flagrant. Mais étant donné que C ++ peut avoir plusieurs déclarations identiques, je ne suis pas surpris. C'est un problème plus difficile à résoudre qu'en Java.
Chris K
18

Checkout Netbeans, il est écrit en Java, vous aurez donc le même environnement quel que soit votre système d'exploitation, et il prend en charge bien plus que le simple C ++.

Je ne vais pas essayer de vous convaincre, car je pense que les IDE peuvent être un choix très personnel. Pour moi, il améliore ma productivité en étant rapide, en prenant en charge les langues dans lesquelles je code et possède les fonctionnalités standard que vous attendez d'un IDE.

Steve M
la source
5
Je peux juste ajouter mon +1 à cela. netbeans a le meilleur analyseur de langage c ++ que j'ai vu dans une idée; bat le cdt d'Eclipse.
Johan Boulé
18

Juste un suivi rapide pour cette question ...

Cela fait un mois que j'ai commencé à utiliser Vim comme mon principal outil "GUI" pour programmer C ++ sous Linux. Au début, la courbe d'apprentissage était en effet un peu abrupte, mais après un certain temps et avec les bonnes options activées et les scripts en cours d'exécution, j'ai vraiment compris!

J'adore la façon dont vous pouvez façonner Vim pour répondre à vos besoins; il suffit d'ajouter / de modifier les mappages de touches et Vim est transformé en un «IDE» hautement productif.

La chaîne d'outils pour construire et compiler un programme C ++ sur Linux est également très intuitive. make et g ++ sont les outils que vous utiliserez.

Le débogueur ddd n'est cependant pas vraiment bon, mais c'est peut-être parce que je n'ai pas eu le temps de le maîtriser correctement.

Donc, pour quiconque est, ou recherchait un bon IDE C ++ sous Linux, tout comme moi, votre meilleur pari repose sur les outils standard disponibles sous Linux lui-même (Vim, g ++, ddd) et vous devriez vraiment au moins essayer d'utiliser avant de chercher autre chose ...

Enfin et surtout, je veux vraiment remercier konrad pour sa réponse ici, cela m'a vraiment aidé à trouver mon chemin dans l'environnement de développement Linux, merci!

Je ne ferme pas non plus cette question, donc les gens peuvent encore réagir ou peut-être même ajouter de nouvelles suggestions ou des ajouts aux réponses déjà vraiment sympas ...

sven
la source
Pouvez-vous faire fonctionner les fonctionnalités IntelliSense-ish dans Vim + ctags? Pas vraiment de saisie semi-automatique, mais des informations contextuelles telles que la liste des paramètres pour la fonction, etc.?
kizzx2
@ kizzx2: Oui , il existe de nombreuses options .
Fred Nurk
12

La réponse la plus courte est: choisir "l'éditeur" que vous aimez, puis utiliser la console GDB ou un simple frontal GDB pour déboguer votre application. Les débogueurs sont livrés avec des IDE sophistiqués tels que Netbeans craint pour C / C ++. J'utilise Netbeans comme éditeur et la console Insight et GDB comme débogueur.

Avec un aperçu, vous avez une belle interface graphique et la puissance brute de GDB.

Dès que vous vous habituerez aux commandes GDB, vous commencerez à l'adorer car vous pouvez faire des choses que vous ne pourrez jamais faire en utilisant une interface graphique. Vous pouvez même utiliser Python comme langage de script si vous utilisez GDB 7 ou une version plus récente.

La plupart des gens ici ont prêté plus d'attention aux «éditeurs» des IDE. Cependant, si vous développez un grand projet en C / C ++, vous pourriez facilement passer plus de 70% de votre temps sur les "débogueurs". Les débogueurs des IDE sophistiqués ont au moins 10 ans de retard sur Visual Studio. Par exemple, Netbenas a des interfaces très similaires avec Visual Studio. Mais son débogueur présente un certain nombre d'inconvénients par rapport à Visual Studio.

  1. Très lent à afficher même un tableau avec seulement quelques centaines d'éléments
  2. Aucune mise en surbrillance pour la valeur modifiée (par défaut, Visual Studio affiche les valeurs modifiées dans les fenêtres de surveillance en rouge)
  3. Capacité très limitée de montrer la mémoire.
  4. Vous ne pouvez pas modifier le code source, puis continuez à exécuter. Si un bogue met du temps à arriver, vous souhaitez changer la source et appliquer les modifications en direct et continuer à exécuter votre application.
  5. Vous ne pouvez pas modifier la «prochaine instruction» à exécuter. Dans Visual Studio, vous pouvez utiliser "Set Next Statement" pour modifier la façon dont votre application s'exécute. Bien que cette fonctionnalité puisse planter votre application si elle n'est pas utilisée correctement, elle vous fera gagner beaucoup de temps. Par exemple, si vous avez trouvé que l'état de votre application n'est pas correct, mais que vous ne savez pas ce qui a causé les problèmes, vous voudrez peut-être réexécuter une certaine région de vos codes source sans redémarrer votre application.
  6. Pas de support intégré pour STL tel que vecteur, liste, deque et map etc.
  7. Pas de points de surveillance. Vous devez avoir cette fonctionnalité, lorsque vous devez arrêter votre application juste au moment où une variable est modifiée. Les ordinateurs Intel ont des points de surveillance matériels afin que les points de surveillance ne ralentissent pas votre système. Cela peut prendre plusieurs heures pour trouver des bogues difficiles à trouver sans utiliser de points de surveillance. "Visual Studio" appelle "pointeur de surveillance" comme "Data BreakPoint".

La liste peut être beaucoup plus longue.

J'étais tellement frustré par les inconvénients des Netbeans ou d'autres IDE similaires, alors j'ai commencé à apprendre GDB lui-même. J'ai trouvé que GDB lui-même est très puissant. GDB n'a pas tous les "inconvénients" mentionnés ci-dessus. En fait, GDB est très puissant, c'est encore mieux que Visual Studio à bien des égards. Ici, je vous montre juste un exemple très simple.

Par exemple, vous avez un tableau comme:

struct IdAndValue
{
  int ID;
  int value;
};


IdAndValue IdAndValues[1000];

Lorsque votre application s'arrête et que vous souhaitez examiner les données dans IdAndValues. Par exemple, si vous souhaitez trouver les ordinaux et les valeurs dans le tableau pour un "ID" particulier, vous pouvez créer un script comme celui-ci:

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

Vous pouvez utiliser toutes les variables de votre application dans le contexte actuel, vos propres variables (dans notre exemple, c'est $ i), les arguments passés (dans notre exemple, c'est $ arg0) et toutes les commandes GDB (intégrées ou définies par l'utilisateur) ).

Utilisez PrintVal 1 à partir de l'invite GDB pour imprimer les valeurs de l'ID "1"

Soit dit en passant, NetBeans est livré avec une console GDB, mais en utilisant la console, vous pouvez planter Netbeans. Et je crois que c'est pourquoi la console est cachée par défaut dans NetBeans

Charles Zhang
la source
Bon point. Mais malheureusement, GDB a une courbe d'apprentissage extrêmement abrupte. Je l'utilise depuis des années maintenant et je n'ai jamais utilisé de macros, et (bien que je sache que cela est possible via des macros!), Tout code STL que je lui lance ne peut pas être mieux débogué que dans les IDE modernes.
Konrad Rudolph
J'ai passé 2 jours à maîtriser la plupart des commandes dans GDB. Une fois que vous connaissez la puissance brute de GBD, vous ne regarderez jamais en arrière. Cela vous fera gagner beaucoup de temps lorsque vous corrigerez les bogues difficiles à trouver.
Charles Zhang
11

J'utilise " Geany " trouvé jusqu'ici bien, son IDE rapide et léger.

Parmi les fonctionnalités de Geany figurent :

  • Pliage de code
  • Enregistrement de session
  • Fonctionnalités de base de l'IDE telles que la coloration syntaxique, les onglets, l'indentation automatique et la complétion de code
  • Gestion de projet simple
  • Système de construction
  • Sélecteur de couleurs (étonnamment pratique lors du développement Web)
  • Émulation de terminal intégrée
  • Conseils d'appel
  • Listes de symboles
  • Auto-complétion des constructions communes (comme si, sinon, tandis que, etc.)
TheCottonSilk
la source
10

Si vous aimez Eclipse pour Java, je suggère Eclipse CDT. Bien que le support C / C ++ ne soit pas aussi puissant que pour Java, il offre toujours la plupart des fonctionnalités. Il a une belle fonctionnalité nommée Managed Project qui facilite le travail avec les projets C / C ++ si vous n'avez pas d'expérience avec Makefiles. Mais vous pouvez toujours utiliser Makefiles. Je fais du codage C et Java et je suis vraiment content de CDT. Je suis en train de développer le firmware pour un appareil embarqué en C et une application en Java qui parle à cet appareil, et c'est vraiment sympa d'utiliser le même environnement pour les deux. Je suppose que cela me rend probablement plus productif.

jassuncao
la source
9

J'adore la façon dont les gens manquent complètement la demande dans la question d'origine pour un IDE. Linux n'est PAS un IDE. Ce n'est tout simplement pas ce que ces mots signifient. J'ai appris le c et le c ++ en utilisant vi et gcc et make, et je ne dis pas que ce ne sont pas des outils adéquats, mais ce n'est PAS un IDE. Même si vous utilisez des outils plus élaborés comme vim ou emacs ou tout autre éditeur de fantaisie que vous souhaitez, taper des commandes sur une ligne de commande n'est pas un IDE.

De plus, vous savez tous que make existe dans le cadre de Visual Studio, n'est-ce pas? L'idée qu'un IDE "limite" est tout simplement stupide si vous pouvez utiliser l'IDE pour accélérer certaines choses, tout en étant capable de vous rabattre sur les commandes en ligne de commande en cas de besoin.

Cela dit, je suggère, comme plusieurs l'ont fait ci-dessus, d'essayer les blocs de code. Sa mise en évidence du code est décente, un moyen assez facile de créer un projet, de le coder, de l'exécuter, etc., qui est le cœur d'un véritable IDE, et semble assez stable. Le débogage craint ... Je n'ai jamais vu un débogueur interactif décent dans aucune variante linux / unix. gdb n'est-ce pas. Si vous êtes habitué au débogage de style studio visuel, vous n'avez pas de chance.

Quoi qu'il en soit, je vais emballer mes affaires, je sais que la foule Linux à vue unique criera cela et me chassera de la ville en un rien de temps.

Un gars
la source
Vous avez raison. Ce n'est pas un IDE tel que nous le connaissons. Cependant, il est intéressant que le PO ait voté pour cette réponse! Clouer mes couleurs sur le mât: je suis un fan des makefiles en ligne de commande.
ScrollerBlaster
Enfin quelqu'un qui a du cerveau ... Je suppose que les autres codent juste des trucs triviaux s'ils peuvent tout faire avec emacs / vim.
Pippo
8

make + vim + gdb = un grand IDE

Matt Fichman
la source
7

J'aime bien l' IDE d' Ultimate ++ . Il a des fonctionnalités qui ont été conçues pour être utilisées avec leur propre bibliothèque (qui, BTW, est une très bonne boîte à outils si vous ne voulez pas acheter sur GTK + ou QT) mais cela fonctionne parfaitement avec les projets C ++ généraux. Il fournit une exécution décente du code, une bonne coloration de la syntaxe, un débogage intégré et toutes les autres fonctionnalités prises en charge par la plupart des IDE modernes.

dguaraglia
la source
Hou la la! En ce qui concerne les captures d'écran, c'est vraiment incroyable! Je vais certainement essayer. Savez-vous si je dois payer pour cela? (Ce ne est pas tout à fait clair sur le site Web de l'Ultime)
Non, c'est gratuit comme dans "discours", "bière" et "ride". Ils sont même assez ouverts pour accepter les correctifs, et sortent très souvent, donc c'est aussi open source que possible :)
dguaraglia
7

Je suggère vraiment des blocs de code . Ce n'est pas aussi lourd qu'Eclipse et il a le support de projet Visual Studio.

DavidG
la source
6

Peut-être que le projet d'outils Linux pour Eclipse pourrait répondre à vos besoins?

Le projet Linux Tools vise à apporter un IDE C et C ++ complet aux développeurs Linux. Nous nous appuyons sur les fonctions d'édition et de débogage des sources du CDT et intégrons des outils de développement natifs populaires tels que GNU Autotools, Valgrind, OProfile, RPM, SystemTap, GCov, GProf, LTTng, etc. Les projets en cours incluent des visualiseurs et Éditeur RPM .spec, intégration des builds Autotools, outil d'analyse de l'utilisation du tas Valgrind et outils de profilage des appels OProfile.

Jean Hominal
la source
6

Sous Linux, il existe de nombreux IDE:

D'après mon expérience, les plus précieux sont Eclipse et Qt Creator . Les deux fournissent toutes les fonctionnalités "standard" (c'est-à-dire la saisie semi-automatique, la coloration syntaxique, le débogueur, l'intégration git). Il convient de noter qu'Eclipse fournit également des fonctionnalités de refactoring, tandis que Qt Creator fournit une intégration avec Valgrind et une prise en charge du déploiement sur des cibles distantes.

De plus, l' IDE CLion commercial semble très bon (mais je ne l'ai pas beaucoup utilisé).

Claudio
la source
5

J'entends qu'Anjuta est assez lisse pour les utilisateurs de Gnome. J'ai joué un peu avec KDevelop et c'est sympa, mais en quelque sorte il manque de fonctionnalités. Code :: Blocks est également très prometteur, et je préfère celui-là.

wvdschel
la source
5

Sun Studio version 12 est un téléchargement gratuit (support gratuit et payant disponible) - http://developers.sun.com/sunstudio/downloads/thankyou.jsp?submit=%A0FREE+Download%A0%BB%A0 .

Je suis sûr que vous disposez de la complétion de code et du support du débogage, y compris le support des plugins dans cet IDE.

Sun Studio est disponible pour Linux ainsi que Solaris. forums: http://developers.sun.com/sunstudio/community/forums/index.jsp . Forums Sun Studio Linux: http://forum.sun.com/forum.jspa?forumID=855

Je serai impatient d'entendre vos commentaires sur cet outil.

BR,
~ A

anjanb
la source
5

J'ai déjà utilisé Ultimate ++ IDE et c'est plutôt bon.

Hernán
la source
5

Et puis j'ai remarqué que ce n'est tout simplement pas comme ça que vous travaillez là-bas *, et j'ai tout jeté, passé quelques jours à lire des manuels, configurer mon shell (bash), configurer un environnement GVIM, apprendre la chaîne d'outils GCC / binutils, faire et gdb et vécu heureux pour toujours.

Je suis plutôt d'accord, mais le problème est aussi celui de la perception: nous oublions à quel point il était difficile de devenir productif dans n'importe quel IDE (ou autre environnement) choisi. Je trouve les IDE (Visual Studio, NetBeans, Eclipse) incroyablement lourds à bien des égards.

En tant qu'ancien gars UNIX, j'utilise toujours Emacs. Mais cela a une courbe d'apprentissage assez abrupte et longue, donc je ne suis pas sûr de pouvoir le recommander aux nouveaux arrivants.

J'appuierais cela; utiliser Emacs comme mon éditeur principal sur Linux et sur MSW (XP2, W2K). Je ne serais pas d'accord pour dire qu'il a une courbe d'apprentissage abrupte , mais je dirais qu'en raison du grand nombre de fonctionnalités, il a une longue courbe d'apprentissage. Vous pouvez être productif en peu de temps, mais si vous le souhaitez, vous pouvez en apprendre de nouvelles fonctionnalités pour les années à venir.

Cependant - ne vous attendez pas à ce que toutes les fonctionnalités d'Emacs soient disponibles dans les menus déroulants, il y a juste trop de fonctionnalités pour les trouver.

Comme je l'ai mentionné, j'utilise GNU Emacs sur MSW depuis des années. Et cela a toujours bien fonctionné avec Visual Studio jusqu'à ce que je «mette à niveau» vers 2008; maintenant, il retarde parfois plusieurs secondes avant d'actualiser les fichiers du disque. La principale raison de l'édition dans la fenêtre VS est la fonction de complétion de code "Intellisense".

NVRAM
la source
5

Bien que j'utilise Vim, certains de mes collègues utilisent SlickEdit qui a l'air plutôt bien. Je ne suis pas certain du débogage intégré car nous ne serions pas en mesure de le faire sur notre projet particulier de toute façon.

SlickEdit a un bon support pour naviguer dans de grandes bases de code, avec des références croisées et des sauts de balises. Bien sûr, il contient également des éléments de base comme la mise en évidence de la syntaxe et la complétion de code.

Greg Hewgill
la source
5

J'utilise Eclipse CDT et Qt Creator (pour les applications Qt).

Voilà mes préférences. C'est une question très suggestive et il y a autant de réponses qu'il y a de développeurs. :)

Etienne Savard
la source
4

SlickEdit. J'utilise et j'adore SlickEdit depuis 2005, à la fois sur Windows et sur Linux. J'ai également de l'expérience dans Visual Studio (5, 6, 2003, 2005) et uniquement avec Emacs et la ligne de commande. J'utilise SlickEdit avec des makefiles externes, certains de mes coéquipiers utilisent SlickEdit, d'autres utilisent Emacs / vi. Je n'utilise pas le débogueur intégré, le contrôle de version intégré, le système de build intégré: je trouve généralement trop d'intégration pour être vraiment pénible. SlickEdit est robuste (très peu de bugs), rapide et intuitif. C'est comme une voiture allemande, une voiture de conducteur.

Les dernières versions de SlickEdit semblent offrir de nombreuses fonctionnalités qui ne m'intéressent pas, je crains un peu que le produit ne se gonfle et ne se dilue à l'avenir. Pour l'instant (j'utilise la V13.0) c'est super.

Radim Cernej
la source
3

Pour moi, Ultimate ++ semble être la meilleure solution pour écrire un programme cross-os

IonLupascu
la source
3

Si vous utilisiez vim depuis longtemps, vous devriez en faire votre IDE. Il y a beaucoup d'addons disponibles. J'en ai trouvé plusieurs assez utiles, et je les ai compilées ici, jetez-y un œil.

Et beaucoup plus dans la série de trucs et astuces vi / vim là-bas.

le geek
la source