makefile automake gnu-make

makefile - ¿Cómo hacer que el automake sea menos feo?



gnu-make (2)

Busqué un poco en Google ya que estoy en el mismo bote, las herramientas de autoconf hacen un buen trabajo, pero hace que tus ojos se vuelvan locos cuando pasa el texto y no hay manera de saber de qué se trata ... aquí hay un enlace a un blog que menciona una herramienta para hacer esto y hacer que se vea más ordenado al igual que la forma en que ve una construcción del kernel hace la magia, es decir,

Compiling foo.so Linking foo.so

Aquí hay otro enlace a una herramienta llamada prettify automake .

Recientemente aprendí a usar automake, y estoy algo molesto de que mis comandos de compilación hayan pasado de ser varios:

g++ -O2 -Wall -c fileName.cpp

Para un grupo de:

depbase=`echo src/Unit.o | sed ''s|[^/]*$|.deps/&|;s|/.o$||''`;/ g++ -DHAVE_CONFIG_H -I. -I./src -g -O2 -MT src/Unit.o -MD -MP -MF $depbase.Tpo -c -o src/Unit.o src/Unit.cpp &&/ mv -f $depbase.Tpo $depbase.Po

¿Hay alguna forma de limpiar esto? Por lo general, puedo elegir fácilmente mensajes de advertencia, pero ahora el muro de texto para leer es 3 veces más grande y mucho más extraño.

Sé cuáles son mis banderas, por lo que es justo decir que "Compilar xxx.cpp" para cada archivo sería perfecto.


A partir de automake 1.11, puede limpiar en gran medida la salida utilizando la opción de reglas silenciosas. Por ejemplo:

$ # First, make without silent rules $ make make all-am gcc -DHAVE_CONFIG_H -I. -g -O2 -MT foo.o -MD -MP -MF .deps/foo.Tpo -c -o foo.o foo.c mv -f .deps/foo.Tpo .deps/foo.Po /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o foo foo.o libtool: link: gcc -g -O2 -o foo foo.o gcc -DHAVE_CONFIG_H -I. -g -O2 -MT bar.o -MD -MP -MF .deps/bar.Tpo -c -o bar.o bar.c mv -f .deps/bar.Tpo .deps/bar.Po /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o bar bar.o libtool: link: gcc -g -O2 -o bar bar.o gcc -DHAVE_CONFIG_H -I. -g -O2 -MT baz.o -MD -MP -MF .deps/baz.Tpo -c -o baz.o baz.c mv -f .deps/baz.Tpo .deps/baz.Po /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o baz baz.o libtool: link: gcc -g -O2 -o baz baz.o gcc -DHAVE_CONFIG_H -I. -g -O2 -MT qux.o -MD -MP -MF .deps/qux.Tpo -c -o qux.o qux.c mv -f .deps/qux.Tpo .deps/qux.Po /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o qux qux.o libtool: link: gcc -g -O2 -o qux qux.o $ # Now, use the silent rules $ ./configure --enable-silent-rules > /dev/null $ make clean all rm -f foo bar baz qux rm -rf .libs _libs rm -f *.o rm -f *.lo make all-am CC foo.o CCLD foo CC bar.o CCLD bar CC baz.o CCLD baz CC qux.o CCLD qux

Todo lo que se necesita es agregar "reglas silenciosas" a la invocación de AM_INIT_AUTOMAKE en configure.ac, y agregar la opción --enable-silent-rules cuando se invoca a configure. (Hubo mucho debate sobre la necesidad de agregar la opción en el momento de la configuración cuando se agregó esta característica, y hay una solución fácil para hacerlo innecesario.) Tenga en cuenta que con las reglas silenciosas habilitadas, aún puede obtener resultados detallados ejecutando '' hacer V = 1 ''