Как сделать автомат менее уродливым?

Недавно я узнал, как использовать automake, и я несколько раздражен тем, что мои команды компиляции перешли от группы:

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

К кучке:

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

Есть ли способ очистить это? Обычно я могу легко выбирать предупреждающие сообщения, но теперь стена текста, которую нужно прочитать, в 3 раза больше и намного более странная.

Я знаю, что такое мои флаги, поэтому просто сказано: "Компиляция xxx.cpp" для каждого файла будет идеальной.

Ответ 1

Как и в случае с automake 1.11, вы можете значительно очистить выход, используя опцию silent-rules. Например:

$ # 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

Все, что необходимо, - это добавить "тихие правила" к вызову AM_INIT_AUTOMAKE в файле configure.ac и добавьте параметр --enable-silent-rules при вызове configure. (Там было много споров о необходимости добавления опции во время настройки, когда эта функция была добавлена, и там является простым обходным путем, чтобы сделать его ненужным.) Обратите внимание, что с включенными режимами молчания, вы все равно можете получать подробные вывод выполняется командой "make V = 1"

Ответ 2

Я немного поработал с поиском, так как я нахожусь в одной лодке, инструменты autoconf делают хорошую работу, но это как бы осыпает ваши глаза, когда текст просыпается и не знает, что это такое... здесь является ссылкой на blog, в котором упоминается инструмент для этого и делает его похожим на аккуратный, как будто вы видите, что сборка ядра делает магия, т.е.

Compiling foo.so
Linking foo.so

Вот еще одна ссылка на инструмент, который называется prettify automake.