Estoy usando SCons para construir un proyecto en el trabajo, y estoy tratando de analizar a través de la salida de texto de GCC para hacer un informe de resumen de todas las advertencias del compilador cada objetivo porque nuestros scripts de compilación son bastante largos, y hay una gran cantidad de salida de texto a la consola.SCons: guardar/redirigir salida de texto gcc (advertencias)
He buscado en Google y este sitio durante bastante tiempo, y no puedo encontrar un método incorporado a SCons para lograr esto. He intentado redirigir todo el flujo stdout y stderr a un archivo por this example, pero solo se captura el resultado de SCons y no el de las herramientas que llama.
Mi siguiente pensamiento fue encontrar dónde SCons compila los argumentos para enviar a GCC y agregar la redirección al final de la cadena de argumentos. Después de leer la documentación, parece que las variables de construcción CCCOM
y CXXCOM
contienen la línea de comando utilizada para compilar. Sin embargo, cuando agregué las líneas a continuación a mi SConstruct, nada cambió en las líneas de comando que SCons está ejecutando.
baseEnv['CCCOM'] += " 2> gcc-c-output.txt"
baseEnv['CXXCOM'] += " 2> gcc-cxx-output.txt"
Una cosa que hizo el trabajo se redirige el flujo stderr en todo el comando SCons:
scons 2> stderr.txt
me gustaría evitar esto, sin embargo, y contienen todo dentro SCons si es posible. La salida tampoco necesariamente tiene que ir a un archivo. Se puede guardar en cualquier lugar siempre que pueda acceder a él para analizar y guardarlo en un archivo al final de la compilación.
He buscado durante tanto tiempo y no he encontrado nada, así que no sé qué más probar. Tengo que creer que no soy el primero que ha querido hacer algo como esto.
Sé que esas variables son en realidad los comandos utilizados para elaborar la cual es por lo pensaron que serían buenos candidatos para modificar, pero parece que SCons está ignorando mis modificaciones. Incluso traté de configurar sus valores en una cadena vacía, y todavía se compiló bien. Siento que algo no está bien porque lo he visto mencionar para modificar esas variables mientras busco una solución. Aunque no pensé en envolver los ejecutables GCC. Exploraré esa opción mientras espero una respuesta SConsy potencialmente más. – EarlCrapstone
@EarlCrapstone, estoy bastante seguro de que el valor de esas 2 variables cambiará (se sobrescribirá) por cada archivo cc compilado, así que no estoy sorprendido de que tus mods no hayan hecho nada. Intenta usar el CC y el CXX en su lugar, y eso realmente marcará la diferencia. Los modifiqué para especificar un compilador diferente y eso funciona. – Brady
Descubrí lo que estaba haciendo mal, pero como soy nuevo no me deja responder mi propia pregunta por otras cuatro horas. @ Brady. Esas variables en realidad no se cambian durante la compilación. Mi problema era que estaba construyendo objetos de biblioteca compartida, por lo que estaba usando 'SHCCCOM' y' SHCXXCOM' en su lugar. – EarlCrapstone