Как сделать автокром менее уродливым? - PullRequest
11 голосов
/ 22 мая 2010

Я недавно узнал, как использовать 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» для каждого файла будет идеальной.

Ответы [ 2 ]

18 голосов
/ 23 мая 2010

Начиная с 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 при запуске настройки. (Там было много споров о необходимости добавления опции во время настройки, когда эта функция была добавлена, и там это простой обходной путь, чтобы сделать его ненужным.) Обратите внимание, что с включенными правилами без вывода сообщений вы все равно можете получить подробный вывод с помощью команды 'make V = 1'

3 голосов
/ 22 мая 2010

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

Compiling foo.so
Linking foo.so

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

...