Rei*_*ica 11 automake makefile gnu-make
我最近学会了如何使用automake,我有点恼火,我的编译命令来自一堆:
g++ -O2 -Wall -c fileName.cpp
Run Code Online (Sandbox Code Playgroud)
对于一堆:
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
Run Code Online (Sandbox Code Playgroud)
有没有办法清理它?我通常可以轻松地选择警告信息,但现在要阅读的文字墙是3倍大且更奇怪.
我知道我的旗帜是什么,因此只需要为每个文件说"编译xxx.cpp"就完美了.
Wil*_*ell 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
所需的只是在configure.ac中调用AM_INIT_AUTOMAKE时添加"silent-rules",并在调用configure时添加选项--enable-silent-rules.(关于在添加此功能时要求在配置时添加选项存在很多争议,并且有一个简单的解决方法可以使其不必要.)请注意,启用静默规则后,您仍然可以通过运行'获得详细输出使V = 1'