Buscando ideas para establecer un entorno de desarrollo conveniente y productivo para el desarrollo C. Encontré que la edición en C con Vim fue muy útil, pero me gustaría obtener una muestra más amplia de sugerencias.
Buscando ideas para establecer un entorno de desarrollo conveniente y productivo para el desarrollo C. Encontré que la edición en C con Vim fue muy útil, pero me gustaría obtener una muestra más amplia de sugerencias.
Respuestas:
Emacs / Vim / Eclipse / ... - Personalmente soy un usuario de Emacs. Si encuentra que las secuencias de control cansan a su dedo meñique, simplemente Viper-Mode. Emacs está muy bien integrado en Unix, por lo que es muy fácil controlar todo desde un solo lugar. Vim también hace un buen trabajo aquí, pero creo que Elisp es un lenguaje de extensión mucho más poderoso que Vim Script. Se podría hablar durante horas sobre todas las formas de configurar Emacs para el desarrollo de C. El modo Flymake ha sido mencionado, y es un súper comienzo para las cosas. No estoy familiarizado con Eclipse, no creo que deje suficiente espacio en mi pantalla para el código, ni me gusta lo hinchado que está (los usuarios de Vim dirán lo mismo sobre Emacs). También estoy injustamente predispuesto contra cualquier cosa escrita en Java, por razones puramente estéticas.
Ctags : etiqueta sus funciones de C (o de muchos otros lenguajes) para que Vim o Emacs o lo que sea pueda hacer un poco de enlace de hipertexto en sus archivos. Digamos que estás deambulando y ves una función y te rascas la cabeza diciendo "¿Qué hace eso otra vez? El nombre es un poco vago". Plink-plank-plunk, puedes saltar directamente a su definición.
Cmake / Gnu-Autotools : Make es genial, pero en algún momento necesitas abstraer un poco las cosas para que tu proyecto pueda construirse en todo tipo de sistemas para los que no tienes forma de probar. Si solo necesita personas para construir su código en un * nix, Autotools es excelente, pero, de todos modos, debería familiarizarse con Cmake. El equipo de Cmake crea el código en todas las configuraciones posibles y se asegura de que no tenga que pasar por el dolor de cabeza. Si desea que su proyecto sea fácil de adquirir, compre otros, una de estas herramientas es crucial.
Git / Mercurial / Subversion / ... - Podría pasar meses investigando el software de control de versiones, pero probablemente debería ir con Git. Es sólido, está distribuido, el @ $! #% Y Linux Kernel se rastrea con él. Si es lo suficientemente bueno para Linus, tiene que ser lo suficientemente bueno para ti. También escucho cosas buenas sobre Mercurial, aparentemente G ** gle las usa, por lo que probablemente no sea malo. Parece que a algunas personas les gusta Subversion y CVS y otras cosas. No me gustan porque son monolíticos, lo que para mí es muy inconveniente y limitante.
Stumpwm / wmii / XMonad / ... - En algún momento te darás cuenta de que cualquier cosa que puedas hacer para que tu trabajo fluya mejorará enormemente tu rendimiento. Una de las mejores maneras de evitar que su cerebro rompa su contexto es cambiar a los administradores de ventanas mosaico, CONTROLADOS POR TECLADO. Soy un fanático personal de StumpWM , el Emacs de los administradores de ventanas. Completamente implementado en un proceso Common Lisp personalizable sobre la marcha, todo lo que se encuentre haciendo repetitivamente puede ser eliminado en funciones y vinculado a comandos. Buena cosa. No sé mucho sobre ninguno de los otros, pero tal vez sea mejor dejar más detalles en otro hilo. UTILICE EL TECLADO TANTO COMO ES POSIBLE.
GDB : no estoy familiarizado con otros depuradores, pero este parece ser el estándar de facto.
Valgrind : no sé de otra cosa que haga lo que esto hace tan bien. Valgrind es crucial para todas esas molestas búsquedas de perfiles / pérdida de memoria que desea continuar. Simplemente no puede escribir código con malloc / calloc sin Valgrind.
Insistí con Vim por un tiempo, vale la pena conocer los conceptos básicos de VIM, ya que siempre encontrarás una caja UNIX en algún lugar que solo tiene eso, pero probé Emacs y no he mirado atrás. Eclipse es una alternativa 'moderna', ¡tengo los tres en mi sistema!
Es una preferencia personal, así que no creo que pueda hacer mucho más que decirte lo que uso. Tengo Emacs configurado con el modo Flymake , que compila periódicamente el archivo en el que está trabajando y analiza la salida del compilador para descubrir qué errores ha cometido. Destaca los errores / advertencias en el búfer y muestra el mensaje de error del compilador asociado
Si está desarrollando C en Unix / Linux, debe usar Cscope si el proyecto tiene un tamaño significativo.
Cscope es una herramienta de desarrollo para el código fuente de la navegación - salto a la función foobar
's definición, encontrar todos los lugares en los que la variable foo
está referenciada, encontrar todos los archivos incluidos bar.h
, cambiar todas las apariciones de bar
dentro baz
, etc.
Además, mencionaste a Vim en tu publicación ... aquí hay un tutorial sobre el uso de Vim y Cscope juntos.
Puede usar el paquete Netbeans C / C ++ que funciona con G ++ / GCC:
Edito C con Vim en la consola. Utilizo makefiles y tengo una serie de compiladores para probar mi código, incluidos gcc, clang (LLVM) e icc. Otras cosas que considero parte de mi entorno de desarrollo: el uso de grep, depuradores y valgrind. Un lenguaje de script para compilaciones más complicadas. Git para control de versiones.
En mi opinión, más importante que lo que usa para editar el código es cómo estructura su código. Probablemente sea una pregunta para Stack Overflow, pero, como usted preguntó, a menudo tengo un directorio separado para el código de objeto no para la distribución y otra carpeta para los binarios resultantes (y | ies). Tengo una carpeta de prueba que contiene más archivos C que usan todo el código genérico que estoy escribiendo y los valoro, junto con el archivo final del proyecto.
Yo uso gedit con terminal incrustado.