C ++ IDE para Linux? [cerrado]

209

Quiero expandir mis horizontes de programación a Linux. Un conjunto de herramientas básico bueno y confiable es importante, y ¿qué es más básico que un IDE?

Podría encontrar estos temas SO:

No estoy buscando un IDE ligero . Si un IDE vale la pena, lo pagaré, por lo que no es necesario que sea gratis.

Mi pregunta, entonces:

¿De qué sirve, IDE de programación C ++ está disponible para Linux?

Los mínimos son bastante estándar: resaltado de sintaxis, finalización de código (como intellisense o su contraparte de Eclipse) y depuración integrada (p. Ej., Puntos de corte básicos).

Lo he buscado yo mismo, pero hay tantos que es casi imposible separar a mano lo bueno de lo malo, especialmente para alguien como yo que tiene poca experiencia en codificación C ++ en Linux. Sé que Eclipse es compatible con C ++ , y realmente me gusta ese IDE para Java, pero ¿es bueno para C ++ y hay algo mejor?

La segunda publicación en realidad tiene algunas buenas sugerencias, pero lo que me falta es lo que hace que el IDE sugerido sea tan bueno para el usuario, ¿cuáles son sus (des) ventajas?

Quizás mi pregunta debería ser:

¿Qué IDE propones (dadas tus experiencias) y por qué?

Peter Mortensen
fuente
1
Esta es, creo, la cuarta pregunta "¿Qué IDE debo usar en Linux?" En un día o dos.
Ben Collins
Tal vez debería mirar la fecha en que se hizo esta pregunta ... o señalar las preguntas más recientes aquí
sven,
En la última versión, Eclipse ha integrado eclipse.org/linuxtools en su tren de lanzamiento; ese proyecto tiene como objetivo hacer de Eclipse un IDE C / C ++ más completo en Linux mediante la integración de herramientas específicas de Linux.
Jean Hominal

Respuestas:

259

Inicialmente: confusión

Cuando escribí originalmente esta respuesta, recientemente hice el cambio de Visual Studio (con años de experiencia) a Linux y lo primero que hice fue tratar de encontrar un IDE razonable. En ese momento esto era imposible: no existía un buen IDE.

Epifanía: UNIX es un IDE. Todo ello. 1

Y luego me di cuenta de que el IDE en Linux es la línea de comando con sus herramientas:

  • Primero configuras tu caparazón
  • y tu editor; elige tu veneno, ambos son de vanguardia:

Dependiendo de sus necesidades, tendrá que instalar y configurar varios complementos para que el editor funcione bien (esa es la parte molesta). Por ejemplo, la mayoría de los programadores en Vim se beneficiarán del complemento YouCompleteMe para la autocompletación inteligente.

Una vez hecho esto, el shell es su interfaz de comando para interactuar con las diversas herramientas: depuradores (gdb), Profilers (gprof, valgrind), etc. Configure su entorno de proyecto / compilación utilizando Make , CMake , SnakeMake o cualquiera de los diversos alternativas. Y administra su código con un sistema de control de versiones (la mayoría de las personas usan Git ). También usa tmux (anteriormente también pantalla) para multiplexar (= pensar en múltiples ventanas / pestañas / paneles) y persistir en su sesión de terminal.

El punto es que, gracias al shell y algunas convenciones de escritura de herramientas, todos se integran entre sí . Y de esa manera, el shell de Linux es un entorno de desarrollo verdaderamente integrado , completamente a la par con otros IDE modernos. (Esto no significa que los IDE individuales no tengan características de las que pueda faltar la línea de comando, pero lo inverso también es cierto).

A cada uno lo suyo

No puedo exagerar qué tan bien funciona el flujo de trabajo anterior una vez que haya adquirido el hábito. Pero algunas personas simplemente prefieren editores gráficos, y en los años transcurridos desde que esta respuesta se escribió originalmente, Linux ha ganado un conjunto de IDEs gráficos excelentes para varios lenguajes de programación diferentes (pero no, hasta donde yo sé, para C ++). Pruébalos incluso si, como yo, terminas sin usarlos. Aquí hay una pequeña y sesgada selección:

Tenga en cuenta que esta lista está lejos de ser completa.


1 Robé ese título del comentario de dsm.

2 Solía ​​referirme a Vim aquí. Y aunque Vim es aún más que capaz, Neovim es un reinicio prometedor, y ha modernizado algunas verrugas viejas.

Konrad Rudolph
fuente
223
Estoy totalmente en desacuerdo. un ide decente es importante sin importar en qué estés trabajando. aumenta drásticamente la productividad. uso codeblocks y encuentro que volver a VI es casi imposible. He codificado en Mac, Win y Linux, y aunque considero que Visual Studio es el mejor IDE, los bloques de código se acercan.
DavidG
35
David, tal vez podrías detallar (respuesta propia ...) exactamente lo que te estás perdiendo de la cadena de herramientas que describí que ofrece un IDE. Como he dicho, vengo de un sólido historial de IDE y mi aumento de productividad fue exactamente el inverso al suyo.
Konrad Rudolph
48
¿Qué soporte de refactorización ofrece Vim? En Eclipse (que se ejecuta en Linux), puedo cambiar el nombre de cualquier método Java que desee, incluso si se llama en 300 lugares. ¿Puedes hacerlo fácilmente en Vim?
quant_dev
25
quant_dev: la refactorización requiere analizar el código fuente de alguna manera. Hasta donde yo sé, ningún módulo VIM hace eso, por lo que la respuesta a su pregunta es "ninguno". Esa es una de las razones para preferir un IDE para lenguajes centrados en IDE como Java. Dado que el soporte de refactorización (etc.) para C ++ es tan mínimo de todos modos (incluso en IDEs), esto no se aplica a C ++.
Konrad Rudolph
11
@hasen: oh, pero grandes partes de él pueden . Cambio de nombre con alcance, por ejemplo. Y créeme, esto es grande . Y Ecplise (por ejemplo) puede ahorrar mucho trabajo aquí.
Konrad Rudolph el
86

Mi favorito personal es el IDE CodeLite 2.x.

ver: http://www.codelite.org

La decisión de usar CodeLite se basó en una investigación sobre el siguiente IDE de C ++ para Linux:

  • Eclipse Galileo con CDT Plugin
  • NetBeans 6.7 (que también es la base para el IDE de SunStudio)
  • KDevelop4
  • CodeBlocks 8.02
  • CodeLite 2.x

Después de todo lo que he decidido utilizar CodeLite 2.x .

A continuación, he enumerado algunos pros y contras con respecto a los IDE de C ++ mencionados. Tenga en cuenta que esto solo refleja mi opinión personal.

EDITAR : qué pena que SOF no soporte tablas, así que tengo que escribir en párrafos ...

Eclipse Galileo con CDT Plugin

Pros:

  • razonablemente rápido
  • también es compatible con Java, Perl (con el complemento EPIC)
  • de uso común y bien mantenido
  • también disponible para otras versiones del sistema operativo (Windows, MacOS, Solaris, AIX (?))

Contras:

  • La GUI es muy confusa y algo inconsistente, no muy intuitiva
  • peso pesado
  • Solo es compatible con CVS (AFAIK)

NetBeans 6.7 (tenga en cuenta que esta también es la base del IDE de SunStudio)

Pros:

  • una de las GUI más intuitivas que he visto
  • también es compatible con Java, Python, Ruby
  • integra CVS, SVN, Mercurial
  • de uso común y bien mantenido
  • también disponible para otros sabores del sistema operativo (Windows, MacOS, Solaris)

Contras:

  • extremadamente lento
  • peso pesado
  • usa espacios para la sangría, que no es la política en mi trabajo. Estoy seguro de que esto es configurable, pero no pude averiguar cómo hacerlo

KDevelop4 (nota: no hice muchas pruebas)

Pros:

  • comúnmente utilizado en Linux
  • integra CVS, SVN, Mercurial

Contras:

  • la GUI parece algo anticuada
  • peso pesado
  • muy específico para el entorno KDE

CodeBlocks 8.02 (nota: no hice muchas pruebas en él)

Pros:

  • razonablemente rápido

Contras:

  • la interfaz gráfica de usuario parece algo anticuada (aunque tiene una buena pantalla de inicio)
  • las fuentes en el editor son muy pequeñas
  • algunos íconos (por ejemplo, los íconos relacionados con el depurador que comienzan / escalonan) son muy pequeños
  • sin integración de control de fuente

CodeLite 2.x (nota: este es mi favorito personal)

Pros:

  • La GUI mejor, moderna e intuitiva que he visto en Linux
  • ligero
  • razonablemente rápido
  • integra SVN
  • también disponible en otros sabores del sistema operativo (Windows, MacOS, Solaris (?))

Contras:

  • sin integración CVS (eso es importante para mí porque tengo que usarlo en el trabajo)
  • no es compatible con Java, Perl, Python (sería bueno tenerlo)
anon
fuente
14
Eclispe tiene soporte para Hg, Git, SVN y otros a través de complementos. Y las pantallas de inicio / bienvenida chupan bolas enormes. Aspiran recursos y ofrecen muy pocos beneficios. Y generalmente aparecen frente a lo que sea que esté trabajando mientras espero que se cargue la aplicación. PortableApps y Eclipse necesitan deshacerse de ellos.
Chris K
44
Codelite obtuvo el mismo atajo de teclado que Visual Studio para la depuración, lo que lo hace muy fácil de usar para los adictos a Visual.
Raoul Supercopter
Puede estar golpeando a un viejo caballo aquí, pero la GUI de IMO eclipse es realmente inigualable. Sí, es difícil de aprender al principio, pero es como Vi, donde la productividad comienza a dispararse después de haber subido la empinada curva de aprendizaje. Para probar un punto, intente presionar Ctrl + 3, una de las características más impresionantes de eclipse IMO.
kizzx2
"Contras: utiliza espacios para la sangría [...] Estoy seguro de que esto es configurable, pero no pude averiguar cómo hacerlo". Eso muestra que realmente no has utilizado la herramienta, de lo contrario, eventualmente habrás encontrado la opción.
Johan Boulé
55
CodeLite es increíble, como masticar chicle con hielo decente. Dejará un sabor fresco y a menta en la boca. Eclipse, aunque es característico, también le da este vómito después de probarlo cuando lo usa. Sé que esto suena infantil, pero es realmente la mejor metáfora para explicar la "sensación" de usarlos. Estoy seguro de que otros estarán de acuerdo conmigo.
Didier A.
75
  1. Código :: Bloques
  2. Eclipse CDT

Pronto descubrirá que los IDE no son suficientes y tendrá que aprender la cadena de herramientas GCC de todos modos (lo cual no es difícil, al menos aprender la funcionalidad básica). Pero no hay daño en reducir el dolor de transición con los IDEs, IMO.

Imran
fuente
+1 para codeblocks y sí, definitivamente querrás aprender al menos cómo compilar y ejecutar tus programas desde un shell, porque code :: blocks tiene algunas fallas.
Earlz
Eclipse no es para nada liviano en mi humilde opinión, Código :: Bloques ... solo
rubenvb
77
-1 para bloques de código. -1 para eclipse. Ambos cambian sus UI durante la depuración. Hasta el punto en que un usuario novato generalmente se siente perdido. Ambos no pueden depurar fork. Ambos tienen problemas desagradables con la integración SVN / CVS. (El último Eclipse junto con Subclipse se rompe en Gnome a partir del 28/04/11 y se bloquea cada 10 minutos). Configurar el control de fuente es una pesadilla y la integración con estos IDE es igual de difícil.
bleepzter
44
@bleepzter -1 por usar SVN / CVS para comenzar;)
OneOfOne
1
Mercurial, Git y Bazar, que son muy superiores en todos los sentidos.
OneOfOne
66

Una respuesta rápida, solo para agregar un poco más de conocimiento a este tema:
definitivamente debe consultar NetBeans . Netbeans 6.7 tiene las siguientes características:

  • Proyectos y plantillas C / C ++: admite resaltado de sintaxis, finalización automática de código, sangría automática.
  • Tiene un depurador C / C ++
  • Admite configuraciones de compilador, administrador de configuración y soporte de Makefile (con un asistente).
  • Tiene una ventana de clases, una ventana de usos y una ventana de navegación de archivos (o panel).
  • Una vista de expansión Macro , y también información sobre herramientas .
  • Soporte para desarrollo QT .

Creo que es una sustitución perfecta (y mucho mejor) de Visual Studio, y una muy buena herramienta para aprender C / C ++.

¡Buena suerte!

ramayac
fuente
2
También es realmente bueno para c ++. Tiene el mejor analizador de idiomas.
Johan Boulé
1
Disfruté mucho más de Netbeans que Eclipse para el desarrollo de c ++.
Thomas Langston
9
NetBeans es mucho más agradable que Eclipse, realmente deseo que más personas empiecen a darse cuenta de eso.
Didier A.
1
Después de luchar con Eclipse durante semanas, encontré esto, cambié a NetBeans y ¡Gracias! Tiene una interfaz más agradable, es más receptiva, intuitiva y personalizable. Beats Eclipse sin duda
Frederik
1
Otro voto aquí por lo mejor que es NetBeans que Eclipse. También tiene, con mucho, la mejor emulación de Vim (como complemento) que he usado.
Thoughton
52

Al menos para proyectos específicos de Qt, Qt Creator (de Nokia / Trolltech / Digia) muestra una gran promesa.

Henrik Hartz
fuente
10
Lo uso para proyectos que no son Qt también.
Chance
Es agradable. Lo probé y me gusta mucho.
Tyler Long
32

¿podría aclarar un poco más cómo fue para usted, qué tuvo que cambiar? Tal vez podría dirigirme en la dirección correcta al proporcionar algunos enlaces a la información que utilizó.

Mi primera fuente fueron en realidad las herramientas ' man páginas de . Sólo tipo

$ man toolname

en la línea de comando ($ aquí es parte de la solicitud, no la entrada).

Dependiendo de la plataforma, están bastante bien escritos y también se pueden encontrar en Internet. En el caso de make, en realidad leo el completo documentación que tomó algunas horas. En realidad, no creo que esto sea necesario o útil en la mayoría de los casos, pero tuve algunos requisitos especiales en mis primeras asignaciones en Linux que requerían un sofisticado archivo MAKE. Después de escribir el makefile, se lo di a un colega experimentado que hizo algunos pequeños ajustes y correcciones. Después de eso, supe bastantemake .

Utilicé GVIM porque tenía algo (pero no mucha) experiencia previa allí, no puedo decir nada sobre Emacs o alternativas. Creo que realmente ayuda leer el .gvimrcarchivo de configuración de otras personas . Mucha gente lo pone en la web. Aquí está el mío .

No intente dominar todos los binutils a la vez, hay demasiadas funciones. Pero obtenga una visión general para saber dónde buscar cuando necesite algo en el futuro. Usted debe , sin embargo, conocer todos los parámetros importantes parag++ y ld(la herramienta de enlazador de GCC que se invoca automáticamente salvo impedimento explícitamente).

También tengo curiosidad, ¿tiene código completado y resaltado de sintaxis cuando codifica?

Resaltado de sintaxis: sí, y mucho mejor que Visual Studio. Terminación del código: sí- ish . Primero, tengo que admitir que no utilicé la finalización del código C ++ incluso en Visual Studio porque (en comparación con VB y C #) no era lo suficientemente bueno. No lo uso a menudo ahora pero, sin embargo, GVIM tiene soporte de finalización de código nativo para C ++. En combinación con la biblioteca ctags y un taglist similar a un complemento, esto es casi un IDE.

En realidad, lo que me hizo comenzar fue un artículo de Armin Ronacher. ¡Antes de leer el texto, mira las capturas de pantalla al final!

¿tiene que compilar primero antes de obtener errores (de sintaxis)?

Si. Pero esto es lo mismo para Visual Studio, ¿no es así (nunca he usado Whole Tomato)? Por supuesto, el resaltado de sintaxis le mostrará paréntesis no coincidentes, pero eso es todo.

y cómo se depura (nuevamente piensa en puntos de interrupción, etc.)?

Yo uso gdbcual es una herramienta de línea de comandos. También hay una interfaz gráfica llamada DDD. gdbes una herramienta de depuración moderna y puede hacer todo lo que puede hacer en un IDE. Lo único que realmente me molesta es leer un seguimiento de la pila porque las líneas no están sangradas o formateadas, por lo que es muy difícil escanear la información cuando se usan muchas plantillas (lo que hago). Pero esos también desordenan el seguimiento de la pila en IDEs.

Como dije, tuve el 'placer' de establecer mis primeros pasos en el lenguaje de programación Java usando el bloc de notas de Windows y el compilador de línea de comandos de Java en la escuela secundaria, y fue ... ¡fue una pesadilla! ciertamente cuando pude compararlo con otros cursos de programación que tenía en aquel entonces donde teníamos IDE decentes

Ni siquiera debería intentar comparar un editor moderno con todas las funciones como Emacs o GVIM con el Bloc de notas. El Bloc de notas es un TextBoxcontrol embellecido , y esto realmente marca la diferencia. Además, trabajar en la línea de comandos es una experiencia muy diferente en Linux y Windows. Las ventanascmd.exe está severamente lisiado. PowerShell es mucho mejor.

/ EDITAR: ¡Debería mencionar explícitamente que GVIM ha editado con pestañas (como en la navegación con pestañas, no con pestañas vs espacios)! Me llevó años encontrarlos, aunque no están ocultos en absoluto. Simplemente escriba en :tabelugar de simple :eal abrir un archivo o crear uno nuevo, y GVIM creará una nueva pestaña. El cambio entre pestañas se puede hacer usando el cursor o varios accesos directos diferentes (dependiendo de la plataforma). La tecla gt(tipo g, luego ten modo comando) debería funcionar en todas partes, y salta a la siguiente pestaña, o pestaña no. n si se dio un número. Escriba :help gtpara obtener más ayuda.

Konrad Rudolph
fuente
@confuzatron: No, uso gdb por varias razones. Lo más importante, generalmente trabajo sin ningún servidor X en ejecución. Además, estoy un poco incómodo por el hecho de que DDD no ha visto ninguna actualización en mucho tiempo. Por otro lado, la propiedad del proyecto acaba de cambiar y parece que hay cambios en marcha.
Konrad Rudolph el
Gracias por la información de la pestaña wrt gvim, nunca nuevo eso :)
Letholdrus
VS2010 resalta los errores de sintaxis sin compilación.
Candy Chiu
@Candy es cierto, VS2010 cambió muchas cosas a este respecto y agregó características avanzadas para la compilación en segundo plano. Pero mientras tanto, gvim también ha agregado muchas características a través de complementos. En particular, probablemente puede obtener resaltado de error de sintaxis sin compilación a través del clang_completecomplemento ahora. Esta respuesta es de 2009 y algunas partes están desactualizadas. Pero ha habido mejoras en todos los lados, por lo que más o menos se iguala.
Konrad Rudolph
25

No repito una respuesta, pero creo que puedo agregar un poco más.

Slickedit es un excelente IDE.

Es compatible con grandes bases de código sin ralentizar ni perder todo el tiempo indexando. (Este es un problema que tuve con cdt de eclipse). La velocidad de Slickedit es probablemente lo mejor de todo, en realidad.
La finalización del código funciona bien y hay una gran cantidad de opciones para cosas como formateo automático, embellecimiento y refactorización.
Tiene depuración integrada.
Tiene soporte para complementos y una comunidad bastante activa para crearlos.
En teoría, debería poder integrarse bien con las personas que hacen el material tradicional de los archivos MAKE, ya que le permite crear un proyecto directamente desde uno, pero eso no funcionó tan bien como me hubiera gustado cuando lo probé.
Además de Linux, existen versiones para Mac y Windows, en caso de que las necesite.

rck
fuente
23

Como un tipo antiguo de UNIX, siempre uso Emacs. Pero eso tiene una curva de aprendizaje bastante empinada y larga, por lo que no estoy seguro de poder recomendarlo a los recién llegados.

Realmente no hay un IDE "bueno" para Linux. Eclipse no es muy bueno para C / C ++ (CDT está mejorando, pero aún no es muy útil). A los demás les faltan todas las características que va a estar buscando.

Realmente es importante aprender cómo funcionan todas las herramientas individuales (gcc, make, gdb, etc.). Después de hacerlo, puede encontrar que la forma de hacer las cosas de Visual Studio es muy limitante.

Kristopher Johnson
fuente
Eclipse CDT "¿aún no es muy útil?" La elaboración sería de gran ayuda. Lo encuentro extremadamente útil (y fácil de usar).
John Zwinck el
"aún no es muy útil": el autocompletado a menudo no funciona, navegar por declaraciones o usos de funciones no funciona, el resaltado de sintaxis no siempre funciona, la refactorización no funciona, etc. Es poco mejor que usar vi. La interfaz de usuario de la interfaz GDB es lo único que hace que valga la pena usar, en mi humilde opinión.
Kristopher Johnson el
Realmente no he intentado refactorizar con el CDT, pero las otras cosas parecen funcionar. Notaré que ejecuto Eclipse con algunos parámetros de configuración de uso de memoria máxima bastante grandes (tengo 8-12 GB de RAM), pero parece estar bien.
John Zwinck, el
La última vez que probé Eclipse CDT, el analizador de sintaxis / semántica para la finalización automática hizo que todo el IDE se congelara durante 8 segundos cada vez que se invocaba. Hizo toda la característica inútil. No puedo creer que la cosa no funcionó en su propio hilo. Esto fue hace dos años, así que espero que ahora esté arreglado. (¿verdad?)
Encuentro CDT increíble para mis incursiones en QT y Boost. En Windows con Mingw tiene sus problemas, pero en un entorno Posix adecuado, la función de autocompletar funciona muy bien. La navegación a las declaraciones es en realidad el único agujero deslumbrante. Pero teniendo en cuenta que C ++ puede tener múltiples declaraciones idénticas, no me sorprende. Este es un problema más difícil de resolver que en Java.
Chris K
18

Checkout Netbeans, está escrito en Java, por lo que tendrá el mismo entorno independientemente de su sistema operativo, y es compatible con mucho más que solo C ++.

No voy a tratar de convencerte, porque creo que los IDE pueden ser una elección muy personal. Para mí, mejora mi productividad al ser rápido, admite los idiomas que codifico y tiene las características estándar que esperarías de un IDE.

Steve M
fuente
55
Solo puedo agregar mi +1 a esto. netbeans tiene el mejor analizador de lenguaje c ++ que he visto en un ide; late ecdtse's cdt.
Johan Boulé
18

Solo un seguimiento rápido de esta pregunta ...

Ha pasado un mes desde que comencé a usar Vim como mi principal herramienta 'GUI' para programar C ++ en Linux. Al principio, la curva de aprendizaje era realmente un poco empinada, pero después de un tiempo y con las opciones correctas activadas y los scripts ejecutándose ¡realmente me acostumbré!

Me encanta la forma en que puedes darle forma a Vim para satisfacer tus necesidades; solo agrega / cambia las asignaciones de teclas y Vim se convierte en un 'IDE' altamente productivo.

La cadena de herramientas para construir y compilar un programa C ++ en Linux también es realmente intuitiva. make y g ++ son los herramientas que usarás.

El depurador ddd embargo, no es realmente tan bueno, pero tal vez eso es porque no he tenido el tiempo para dominar correctamente.

Entonces, para cualquiera que esté o esté buscando un buen IDE de C ++ en Linux, al igual que yo, su mejor opción radica en las herramientas estándar disponibles en Linux (Vim, g ++, ddd) y al menos debería intentar usar ellos, antes de buscar algo más ...

Por último, pero no menos importante, realmente quiero agradecer a Konrad por su respuesta aquí. Realmente me ayudó a encontrar mi camino en el entorno de desarrollo de Linux, ¡gracias!

También estoy no cerrar esta pregunta, por lo que la gente todavía puede reaccionar o tal vez incluso añadir nuevas sugerencias o adiciones a las respuestas ya muy agradable ...

sven
fuente
¿Puedes conseguir que las funciones IntelliSense-ish funcionen en Vim + ctags? ¿No solo se completa automáticamente, sino información sensible al contexto, como la lista de parámetros para la función, etc.?
kizzx2
@ kizzx2: , no son muchas opciones .
Fred Nurk
12

La respuesta más corta es: elegir el "editor" que desee, luego usar la consola GDB o un simple front-end GDB para depurar su aplicación. Los depuradores vienen con IDE sofisticados como Netbeans apesta para C / C ++. Yo uso Netbeans como mi editor, y la consola Insight y GDB como mi depurador.

Con perspicacia, tiene una buena interfaz gráfica de usuario y el poder bruto de GDB.

Tan pronto como se acostumbre a los comandos GDB, comenzará a amarlo ya que puede hacer cosas que nunca podrá hacer con una GUI. Incluso puede usar Python como lenguaje de script si está utilizando GDB 7 o una versión más reciente.

La mayoría de las personas aquí prestaron más atención a los "Editores" de los IDE. Sin embargo, si está desarrollando un proyecto grande en C / C ++, podría pasar fácilmente más del 70% de su tiempo en los "depuradores". Los depuradores de los IDE elegantes están al menos 10 años detrás de Visual Studio. Por ejemplo, Netbenas tiene interfaces muy similares con Visual Studio. Pero su depurador tiene una serie de desventajas en comparación con Visual Studio.

  1. Muy lento para mostrar incluso una matriz con solo unos pocos cientos de elementos
  2. Sin resaltar el valor modificado (de forma predeterminada, Visual Studio muestra los valores modificados en las ventanas del reloj en rojo)
  3. Capacidad muy limitada para mostrar memoria.
  4. No puede modificar el código fuente y luego continuar ejecutándose. Si un error tarda mucho en llegar, le gustaría cambiar la fuente y aplicar los cambios en vivo y continuar ejecutando su aplicación.
  5. No puede cambiar la "próxima declaración" para ejecutar. En Visual Studio, puede usar "Establecer siguiente declaración" para cambiar el funcionamiento de su aplicación. Aunque esta característica podría bloquear su aplicación si no se usa correctamente, le ahorrará mucho tiempo. Por ejemplo, si descubrió que el estado de su aplicación no es correcto, pero no sabe qué causó los problemas, es posible que desee volver a ejecutar una determinada región de sus códigos fuente sin reiniciar la aplicación.
  6. No hay soporte incorporado para STL como vector, lista, deque y mapa, etc.
  7. No hay puntos de observación. Necesita tener esta característica, cuando necesita detener su aplicación justo en el punto en que se cambia una variable. Las computadoras basadas en Intel tienen puntos de vigilancia de hardware para que los puntos de vigilancia no ralenticen su sistema. Puede llevar muchas horas encontrar algunos errores difíciles de encontrar sin utilizar los puntos de observación. "Visual Studio" llama "puntero de reloj" como "Data BreakPoint".

La lista puede ser mucho más larga.

Estaba tan frustrado por las desventajas de los Netbeans u otros IDE similares, por lo que comencé a aprender GDB. Encontré que GDB en sí mismo es muy poderoso. GDB no tiene todas las "desventajas" mencionadas anteriormente. En realidad, GDB es muy poderoso, es incluso mejor que Visual Studio en muchos sentidos. Aquí solo te muestro un ejemplo muy simple.

Por ejemplo, tiene una matriz como:

struct IdAndValue
{
  int ID;
  int value;
};


IdAndValue IdAndValues[1000];

Cuando su aplicación se detiene y desea examinar los datos en IdAndValues. Por ejemplo, si desea encontrar los ordinales y los valores en la matriz para un "ID" en particular, puede crear un script como el siguiente:

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

Puede usar todas las variables en su aplicación en el contexto actual, sus propias variables (en nuestro ejemplo, es $ i), los argumentos pasados ​​(en nuestro ejemplo, es $ arg0) y todos los comandos GDB (integrados o definidos por el usuario )

Use PrintVal 1 del indicador GDB para imprimir valores para ID "1"

Por cierto, NetBeans viene con una consola GDB, pero al usar la consola, puedes bloquear Netbeans. Y creo que es por eso que la consola está oculta por defecto en NetBeans

Charles Zhang
fuente
Buen punto. Pero desafortunadamente GDB tiene una curva de aprendizaje extremadamente empinada. Lo he estado usando durante años y todavía nunca he usado macros, y (¡aunque sé que esto es posible a través de las macros!), Cualquier código STL que le arroje no se puede depurar mejor que en los IDE modernos.
Konrad Rudolph
Pasé 2 días para dominar la mayoría de los comandos en GDB. Una vez que conozca la potencia bruta de GBD, nunca mirará hacia atrás. Le ahorrará mucho tiempo cuando arregle los errores difíciles de encontrar.
Charles Zhang el
11

Estoy usando " Geany " encontrado bueno hasta ahora, es IDE rápido y ligero.

Entre las características de Geany están :

  • Código plegable
  • Guardar sesión
  • Funciones IDE básicas como resaltado de sintaxis, pestañas, sangría automática y finalización de código
  • Gestión de proyectos simple
  • Sistema de construcción
  • Selector de color (sorprendentemente útil durante el desarrollo web)
  • Emulación de terminal integrada
  • Consejos de llamadas
  • Listas de símbolos
  • Autocompletado de construcciones comunes (como if, else, while, etc.)
TheCottonSilk
fuente
10

Si te gusta Eclipse para Java, sugiero Eclipse CDT. A pesar de que el soporte C / C ++ no es tan poderoso como lo es para Java, todavía ofrece la mayoría de las características. Tiene una buena característica llamada Proyecto Gestionado que hace que trabajar con proyectos C / C ++ sea más fácil si no tienes experiencia con Makefiles. Pero aún puedes usar Makefiles. Hago codificación C y Java y estoy muy contento con CDT. Estoy desarrollando el firmware para un dispositivo integrado en C y una aplicación en Java que habla con este dispositivo, y es realmente agradable usar el mismo entorno para ambos. Supongo que probablemente me haga más productivo.

jassuncao
fuente
9

Me encanta cómo la gente pierde por completo la solicitud en la pregunta original para un IDE. Linux NO es un IDE. Eso no es lo que esas palabras significan. Aprendí c y c ++ usando vi y gcc y make, y no digo que no sean herramientas adecuadas, pero NO son un IDE. Incluso si utiliza herramientas más elaboradas como vim o emacs o cualquier editor elegante que desee, escribir comandos en una línea de comandos no es un IDE.

Además, todos saben que make existe como parte del estudio visual, ¿verdad? La idea de que un IDE es "limitante" es una tontería si puede usar el IDE para acelerar algunas cosas, pero aún puede recurrir a las cosas de la línea de comandos cuando sea necesario.

Dicho todo esto, sugeriría, como lo han hecho varios de los anteriores, probar bloques de código. Tiene un resaltado de código decente, una forma bastante fácil de crear un proyecto, codificarlo, ejecutarlo, etc., que es el núcleo de un IDE real y parece bastante estable. La depuración apesta ... Nunca he visto un depurador interactivo decente en ninguna variante de Linux / Unix. Dios no lo es. Si estás acostumbrado a la depuración visual del estilo de estudio, no tienes suerte.

De todos modos, iré a empacar mis cosas, sé que la multitud de Linux de una sola vista gritará esto y me sacará de la ciudad en poco tiempo.

Algún chico
fuente
Usted tiene un punto. No es un IDE tal como lo conocemos. Sin embargo, es interesante que el OP votó por esa respuesta. Clavar mis colores al mástil: soy un fanático de los makefiles de línea de comandos.
ScrollerBlaster
Finalmente alguien que tiene algo de cerebro ... Supongo que los demás solo codifican cosas triviales si pueden hacer todo con emacs / vim.
Pippo
8

make + vim + gdb = un gran IDE

Matt Fichman
fuente
7

Me gusta bastante el IDE de Ultimate ++ . Tiene algunas características que fueron diseñadas para usar con su propia biblioteca (que, por cierto, es un buen juego de herramientas si no desea comprar GTK + o QT), pero funciona perfectamente bien con proyectos generales de C ++. Proporciona terminación de código decente, buena coloración de sintaxis, depuración integrada y todas las demás funciones que admiten los IDE más modernos.

dguaraglia
fuente
¡Guauu! En cuanto a las capturas de pantalla que realmente se ve increíble! Definitivamente lo intentaré. ¿Sabes si tengo que pagarlo? (Eso no está del todo claro en el sitio web de Ultimate ++)
No, es gratis como en "discurso", "cerveza" y "paseo". Son aún bastante abierta sobre la aceptación de los parches, y liberan muy a menudo, así que es como código abierto como se pone :)
dguaraglia
7

Realmente sugiero bloques de código . No es tan pesado como Eclipse y tiene soporte para proyectos de Visual Studio.

DavidG
fuente
6

¿Quizás el Proyecto de herramientas de Linux para Eclipse podría satisfacer sus necesidades?

El proyecto Linux Tools tiene como objetivo llevar un IDE C y C ++ con todas las funciones a los desarrolladores de Linux. Nos basamos en las funciones de edición y depuración de código fuente de CDT e integramos herramientas de desarrollo nativas populares como GNU Autotools, Valgrind, OProfile, RPM, SystemTap, GCov, GProf, LTTng, etc. Los proyectos actuales incluyen visores y analizadores de rastreo LTTng, un Editor RPM .spec, integración de compilación de Autotools, una herramienta de análisis de uso del montón Valgrind y herramientas de perfil de llamadas OProfile.

Jean Hominal
fuente
6

En Linux hay muchos IDE:

En mi experiencia, los más valiosos son Eclipse y Qt Creator . Ambos proporcionan todas las características "estándar" (es decir, autocompletado, resaltado de sintaxis, depurador, integración git). Vale la pena señalar que Eclipse también proporciona funcionalidades de refactorización, mientras que Qt Creator proporciona integración con Valgrind y soporte para la implementación en objetivos remotos.

Además, el CLion IDE comercial parece bastante bueno (pero no lo he usado ampliamente).

Claudio
fuente
5

Escuché que Anjuta es bastante hábil para los usuarios de Gnome. Jugué un poco con KDevelop y es agradable, pero carece de características. Code :: Blocks también es muy prometedor, y me gusta más.

wvdschel
fuente
5

Sun Studio versión 12 es una descarga gratuita (soporte GRATUITO y de pago disponible) - http://developers.sun.com/sunstudio/downloads/thankyou.jsp?submit=%A0FREE+Download%A0%BB%A0 .

Estoy seguro de que tiene la finalización del código y el soporte de depuración, incluido el soporte de complementos en este IDE.

Sun Studio está disponible para Linux y Solaris. foros: http://developers.sun.com/sunstudio/community/forums/index.jsp . Foros de Sun Studio Linux: http://forum.sun.com/forum.jspa?forumID=855

Estaré ansioso por escuchar sus comentarios sobre esta herramienta.

BR,
~ A

anjanb
fuente
5

Anteriormente utilicé Ultimate ++ IDE y es bastante bueno.

Hernán
fuente
5

Y luego me di cuenta de que simplemente no es así como trabajas allí *, y tiré todo, pasé unos días leyendo manuales, configuré mi shell (bash), configuré un entorno GVIM, aprendí la cadena de herramientas GCC / binutils, make y gdb y vivieron felices para siempre.

Estoy de acuerdo en su mayoría, pero el problema también es de percepción: olvidamos lo difícil que fue ser productivo en cualquier IDE elegido (u otro entorno). Encuentro los IDE (Visual Studio, NetBeans, Eclipse) increíblemente engorrosos de muchas maneras.

Como un tipo antiguo de UNIX, siempre uso Emacs. Pero eso tiene una curva de aprendizaje bastante empinada y larga, por lo que no estoy seguro de poder recomendarlo a los recién llegados.

En segundo lugar eso; uso Emacs como mi editor principal tanto en Linux como en MSW (XP2, W2K). No estoy de acuerdo con que tenga una curva de aprendizaje pronunciada , pero diría que debido a la gran cantidad de características tiene una curva de aprendizaje larga . Puede ser productivo en poco tiempo, pero si lo desea, puede aprender nuevas características en los próximos años.

Sin embargo, no espere que todas las características de Emacs estén disponibles en los menús desplegables, hay demasiada funcionalidad para encontrarlo allí.

Como mencioné, he usado GNU Emacs en MSW durante años. Y siempre funcionó bien con Visual Studio hasta que me "actualicé" a 2008; ahora a veces demora muchos segundos antes de actualizar archivos del disco. La razón principal para editar en la ventana VS es la función de finalización de código "Intellisense".

NVRAM
fuente
5

Aunque uso Vim, algunos de mis compañeros de trabajo usan SlickEdit, que se ve bastante bien. No estoy seguro acerca de la depuración integrada porque de todos modos no podríamos hacer eso en nuestro proyecto en particular.

SlickEdit tiene un buen soporte para navegar bases de código grandes, con referencias cruzadas y saltos de etiquetas. Por supuesto, tiene las cosas básicas como el resaltado de sintaxis y la finalización del código también.

Greg Hewgill
fuente
5

Utilizo Eclipse CDT y Qt Creator (para aplicaciones Qt).

Esas son mis preferencias. Es una pregunta muy sugerente y hay tantas respuestas como desarrolladores. :)

Etienne Savard
fuente
4

SlickEdit. He usado y amado SlickEdit desde 2005, tanto en Windows como en Linux. También tengo experiencia trabajando en Visual Studio (5, 6, 2003, 2005) y solo con Emacs y la línea de comandos. Uso SlickEdit con archivos MAKE externos, algunos de mis compañeros de equipo usan SlickEdit, otros usan Emacs / vi. No utilizo el depurador integrado, el control de versiones integrado, el sistema de compilación integrado: generalmente encuentro demasiada integración como un verdadero dolor. SlickEdit es robusto (muy pocos errores), rápido e intuitivo. Es como un automóvil alemán, un automóvil de conductor.

Las versiones más recientes de SlickEdit parecen ofrecer muchas características que no me interesan, estoy un poco preocupado de que el producto se hinche y se diluya en el futuro. Por ahora (uso V13.0) es genial.

Radim Cernej
fuente
3

Para mí, Ultimate ++ parece ser la mejor solución para escribir programas cross-os

IonLupascu
fuente
3

Si estuvo usando vim durante mucho tiempo, debería hacerlo como su IDE. Hay muchos complementos disponibles. Encontré varios de ellos como bastante útiles, y lo compilé aquí, échale un vistazo.

Y mucho más en la serie de consejos y trucos vi / vim de allí.

el friki
fuente