|
内核 Makefile 文件选择 Debian 5.06,内核为 2.6.26,其中从 238 行到 259 行的注释中知道,$(Q) 变量的作用是决定是否在执行命令时输出详细的命令信息。底下对其有定义:
ifeq ($(KBUILD_VERBOSE),1)
quiet =
Q =
else
quiet=quiet_
Q = @
endif
定义的意思是,如果 KBUILD_VERBOSE 为 1,则 quiet 和 Q 为空,即执行命令时会输出命令执行的详细信息;否则 quiet 为 quiet_ ,Q 为 @ 。在 Makefile 中,如果一个命令前使用了 @ 符号,那么在执行命令时将不输出命令的执行详细信息。
抛开内核 Makefile 文件的庞大,这里只依样画葫芦的做一下实验,下面是一个测试 Makefile : KBUILD_VERBOSE := 1
ifeq ($(KBUILD_VERBOSE), 1)
quiet =
Q =
else
quite = quiet_
Q = @
endif
all:
$(Q)mkdir -p /home/beyes/makefile_test/quite/test_quite
Make 一下: beyes@debian:~/makefile_test/quite$ make
mkdir -p /home/beyes/makefile_test/quite/test_quite
由执行结果看到,Makefile 中的 mkdir 命令执行过程整个输了出来。
再改一下 Makefile 中的 KBUILD_VERBOSE := 1 为KBUILD_VERBOSE := 0,那么再次执行 make 时,已经看不见任何输出。 |
|