2010-05-22 4 views
11

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

ответ

18

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

+6

Похоже, все, что требуется, чтобы по умолчанию было добавить AM_SILENT_RULES ([да]). Это именно то, что я искал. –

+1

Thanks; добавив 'AM_SILENT_RULES ([да])' сам по себе 'configure.ac', сразу после строки' AM_INIT_AUTOMAKE', сделал трюк. Намного приятнее. –

+0

Извините за неквалифицирование здесь ... У меня та же проблема, что и исходный плакат. Для меня было бы хорошо, если бы мой вывод был похож на ваш первоначальный пример «без тихих правил». Это кажется довольно стандартным. Но мои приходят со всеми типами седловых линий, таких как OP, особенно обескураживающие переменной «depbase». Это честно довольно сложно на глазах. Есть ли способ просто очистить эту часть и оставить команды компиляции? –

4

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

 
Compiling foo.so 
Linking foo.so 

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

+0

Оба соединения мертвы. –

Смежные вопросы