makefile显示命令

举报
yd_221104950 发表于 2020/12/02 22:53:24 2020/12/02
【摘要】 每条命令的开头必须以 Tab 键开头,除非命令是跟在依赖规则后的分号后面。在命令行之间中的空格或者空行会被忽略,但是如果该空格或空行是以 Tab 键开头的,那么 make 会认为其是一个空命令。 如果我们在编译过程中,可以显示正在编译哪一步,就会很方便我们对程序编译的监控。我们可以使用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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。