makefile显示命令
每条命令的开头必须以 Tab 键开头,除非命令是跟在依赖规则后的分号后面。在命令行之间中的空格或者空行会被忽略,但是如果该空格或空行是以 Tab 键开头的,那么 make 会认为其是一个空命令。
如果我们在编译过程中,可以显示正在编译哪一步,就会很方便我们对程序编译的监控。我们可以使用makefile的一些显示命令,添加上一些类似注释的信息,伴随编译的过程打印到控制台上。
在makefile中,当我们在命令行前加上@ ,那么这个命令将不会被 make 显示出来。我们常用@echo命令显示一些有用的信息,如我们以下这个makefile文件:
all:main1 main2
.PHONY : all
MAIN_1_OBJ = main.o hello.o car.o
main1: $(MAIN_1_OBJ) @echo 正在创建程序main1... gcc -o main1 $(MAIN_1_OBJ)
main.o hello.o:hello.h
main.o car.o:car.h
main2:main2.o @echo 正在创建程序main2... @gcc -o main2 main2.o
.PHONY:cleanall cleanobj cleanapp
cleanall:cleanobj cleanapp
cleanobj: @echo 正在删除目标文件... -rm *.o
cleanapp: @echo 正在删除可执行文件main1 main2 -rm main1 main2
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
在命令行前加上@ ,那么这个命令将不会被 make 显示出来:
~/Desktop/mydir$ make
cc -c -o main.o main.c
cc -c -o hello.o hello.c
cc -c -o car.o car.c
正在创建程序main1...
gcc -o main1 main.o hello.o car.o
cc -c -o main2.o main2.c
正在创建程序main2...
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
可以看到echo命令没有被显示出来,gcc -o main2 main2.o这行命令前,因为有@,所以在make时,也没有被显示出来,但是他们都被执行了。
如果执行make命令时,带上参数 -n 或 --just-print,那么其只是显示命令,但不会执行命令:
~/Desktop/mydir$ make -n
cc -c -o main.o main.c
cc -c -o hello.o hello.c
cc -c -o car.o car.c
echo 正在创建程序main1...
gcc -o main1 main.o hello.o car.o
cc -c -o main2.o main2.c
echo 正在创建程序main2...
gcc -o main2 main2.o
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
这个功能很方便我们调试Makefile,可以查看书写的makefile命令最后要执行的内容和执行的顺序。
如果执行make命令时,带上参数 -s 或 --silent 或 --quiet 则会禁止命令在控制台的打印,但命令会被执行:
~/Desktop/mydir$ make -s
正在创建程序main1...
正在创建程序main2...
~/Desktop/mydir$ ls
car.c car.o hello.c hello.o main2 main2.o main.o module
car.h hello hello.h main1 main2.c main.c makefile
- 1
- 2
- 3
- 4
- 5
- 6
- 7
谢谢阅读
文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_40763897/article/details/103142398
- 点赞
- 收藏
- 关注作者
评论(0)