c++ - mac - g++ ubuntu
Mejora de la salida de g++ (10)
g ++ a veces produce resultados bastante complicados. Especialmente cuando se trata de plantillas. ¿Hay alguna herramienta que haga que la salida de g ++ sea más legible? ... al menos algo de color?
Puede parecer una tontería hacer esta pregunta aquí, pero no he podido buscar en Google para salir de esto.
Ahí está mi función personal:
colorgcc()
{
perl -wln -M''Term::ANSIColor'' -e ''
m/not found$/ and print "/e[1;30m$`/e[0m", "$&", "/e[0m"
or
m/found$/ and print "/e[1;30m$`/e[0;32m", "$&", "/e[0m"
or
m/yes$/ and print "/e[1;30m$`/e[0;32m", "$&", "/e[0m"
or
m/no$/ and print "/e[1;30m$`/e[0m", "$&", "/e[0m"
or
m/ Error |error:/i and print "/e[1;91m", "$_", "/e[0m"
or
m/ Warning |warning:/i and print "/e[0;33m", "$_", "/e[0m"
or
m/nsinstall / and print "/e[0;36m", "$_", "/e[0m"
or
m/Linking |link: |/.a/b/ and print "/e[1;36m", "$_", "/e[0m"
or
m/Building|gcc|g++|/bCC/b|/bcc/b/ and print "/e[1;30m", "$_", "/e[0m"
or
print; ''
}
Al tratar con el STL 1 , STLFilt viene al rescate.
En una nota relacionada, también escuché que el compilador Clang produce por sí mismo mensajes de error en general mucho mejores.
Rincón de los Nitpickers- En realidad, no es el SGI STL, sino las partes que se han adoptado en el estándar C ++ y son parte de la biblioteca estándar.
GCC a partir de 4.9 ha coloreado la salida ☺
Agregue lo siguiente a su bashrc / zshrc / lo que sea.
export GCC_COLORS=''error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01''
Hay colorgcc , un script en perl que envuelve la salida de gcc (g ++) con color para facilitar la lectura.
En cuanto a la "salida" de gcc (g ++) supongo que no te estás quejando de los binarios compilados :)
Hay colorgcc .
Lo mejoro usando sed para colorear la salida con este script:
#!/bin/bash
while read x ; do echo $x ; done /
| sed -e "s/.*error:.*//x1b[1;36m&/x1b[0m/" /
-e "s/.*warning:.*//x1b[1;36m&/x1b[0m/" /
-e "s/^/(.*/)/(required from/)//x1b[1;36m/1/x1b[0mnote: /2/" /
-e "s/^/(.*/)/(In instantiation of/)//x1b[1;36m/1/x1b[0mnote: /2/" /
-e "s/^/(.*/)/(In member/)//x1b[1;36m/1/x1b[0mnote: /2/" /
| sed -e "s/error://x1b[1;31m&/x1b[1;36m/" /
-e "s/warning://x1b[1;35m&/x1b[1;36m/" /
-e "s/note://x1b[1;30m&/x1b[0m/"
No puedo responder a su pregunta directamente, pero tenga en cuenta que en lo que respecta a las plantillas, si observa el mensaje superior (el error causado por la plantilla) y el mensaje inferior "ejemplificado desde aquí", generalmente se vuelve mucho más claro. Ignore todos los mensajes intermedios, ya que probablemente no vayan a ayudar.
Si eres libre de cambiar el compilador, prueba clang++ . La mayoría de las veces, las salidas de error son muy claras y, a veces, incluso le dirán qué hacer para corregir su error. Puede encontrar una comparación de la salida del error gcc vs clang aquí: http://clang.llvm.org/diagnostics.html .
De lo contrario, como lo señaló Matteo Italia, mira a STLFilt .
Para el aspecto del color, la solución de Edwin Buck ( colorgcc ) es muy buena. Puede crear enlaces simbólicos a él llamados gcc, g ++, etc. para que siempre se utilicen cada vez que ejecute un comando del compilador (siempre que configure las rutas en la secuencia de comandos colorgcc correctamente). Encuentro esto especialmente conveniente cuando compila un proyecto grande de un Makefile. Ayuda enormemente a detectar dónde algo salió mal exactamente (especialmente cuando haces compilaciones paralelas con make -j
).
Si usa gcc 4.9 o superior, hay un par de opciones integradas:
- -fmessage-length = n, que optimiza la salida para líneas de n caracteres de longitud.
- -fdiagnostics-color = siempre, que aplica algunos colores agradables.
(Funciona bien en Linux, no tanto en MSYS)
Para más opciones y uso exacto aquí está la documentación:
https://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Message-Formatting-Options.html
puede usar GilCC, que es una herramienta de Ruby que convertirá la salida de GCC a color en tiempo real. Es gratis y puedes personalizarlo a tu gusto. No es intrusivo, ya que no cambia la configuración de gcc y no tiene que editar ningún archivo del sistema como .bash. Tienes que instalar Ruby y ser capaz de invocar programas de Ruby desde la línea de comandos. Ahora mismo tienes dos opciones de script Perl o GilCC y si trabajas con Ruby te gustará GilCC.
Luego, cada vez que llame a "GillCC", llamará "make" detrás de escena con sus parámetros como "limpiar", "depurar" o "liberar". por ejemplo, si normalmente llama: "hacer depuración" debería llamar "depuración GilCC".
Casi olvidé mencionar que GilCC tiene algunas estadísticas como el número de advertencias y errores, así como el tiempo de compilación. Estas cosas son útiles cuando estás tratando de mejorar tu construcción.
El enlace a la página de descarga está here .