博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
makefile(三)使用命令
阅读量:5743 次
发布时间:2019-06-18

本文共 1510 字,大约阅读时间需要 5 分钟。

hot3.png

1. 显示命令

make工具要把执行的命令行在命令执行前输出到屏幕上。当使用@字符在命令行前,这个命令将不被make工具显示出来,可以利用这个功能向屏幕输出一些信息,如下所示:

@echo compling...

当make执行时,会在屏幕上输出“compling...”的字符串,但是不会输出“ compling...”命令。如果将@符号去掉,make工具在执行makefile文件时会将“echo compling...”命令本身输出,如下:

在makefile文件中编辑:

tar :	echo compling...

执行:

如果make工具执行时,make参数是-n或--just-print,则可以只显示命令,但是不会执行命令,用户可以利用这个功能调试makefile文件,命令在make过程中执行的顺序。

make参数是-s或--slient,则禁止所有命令的显示,不论该命令前是否有@符。

2.执行命令

当一个规则被执行时,make工具会一条一条地执行规则后面定义的命令。这些命令可以是shell中可以运行的命令,也可以是一个用户自己的可执行程序。下面实例演示了在makefile中使用命令,该makefile调用一个当前目录下的应用程序:

#include 
int main(void){ printf("hello world\n"); return 0;}

编译该程序:

gcc hello.c -o hello

编辑makefile文件:

all :	ls	./hello.PHONY : all

执行makefile文件:

需要注意的是,如果要使上一条命令的结果应用在下一条命令时,应当使用“;”分隔这两条命令。下面比较说明shell命令的执行结果问题。

编辑makefile文件如下:

exec :	cd /home/daowm	pwd.PHONY : exec

执行:

编辑makefile文件如下:

exec :	cd /home/daowm; pwd.PHONY : exec

执行:

执行两个makefile时,第一个例子中的cd没有起作用,pwd会打印当前的makefile目录。而第二个例子中,cd就起作用了,pwd会打印出新进入的目录。

3.命令出错

每当命令执行完后,make、工具会检测每个命令的返回码。如果命令返回成功,make工具会执行下一条命令。当规则中所有的命令成功返回后,这个规则就算是成功完成了。如果规则中的某个命令出错了(命令退出码非0),make工具就会终止执行当前规则,并有可能终止所有的规则。

有些时候,命令的出错并不表示就是错误的。例如mkdir命令,使用该命令的目的就是一定要保证建立一个目录。如果目录不存在,那么mkdir就成功执行,但如果目录存在,那么该命令就会出错。有些时候用户并不希望因为mkdir命令出错而终止整个规则的运行。

因此需要忽略命令的出错。make工具支持在规则的命令行前加一个减号“-”,忽略对该命令执行结果的判断,如下:

clean:    -rm -f *.c

上例表示即使rm命令出错,该规则也会执行,而不会停止执行该规则。

make的参数-i或者--ignore-errors可以使makefile文件中所有命令都忽略错误,如果一个规则是以 .IGNORE声明作为目标的,那么这个规则中的所有命令都将忽略错误,如下所示:

clean:    rm -f *.c.IGNORE : clean

 

转载于:https://my.oschina.net/daowuming/blog/778505

你可能感兴趣的文章
RouteReuseStrategy angular路由复用策略详解,深度刨析路由复用策略
查看>>
Zabbix4.0 for PostgreSQL (下篇):后续部署及添加监控项
查看>>
JavaScript 代码简洁之道
查看>>
基于django的视频点播网站开发-step6-个人中心功能
查看>>
Linux 命令之grep
查看>>
Tomcat两种部署方式
查看>>
Kubernetes API 分析 ( Kube-apiserver )
查看>>
融合了 JavaScript 之力的 Nashorn 或被 JDK 11 弃用
查看>>
4-学会刷Wi-Fi模块固件(刷AT指令固件)
查看>>
斯坦福-随机图模型-week1.0_
查看>>
ASP.NET Core 2 学习笔记(五)静态文件
查看>>
Button 使用Command 按钮置灰未更新
查看>>
Ansible windows客户端安装及部分模块使用(学习笔记十六)
查看>>
KEYVALUE
查看>>
Zabbix 监控图表中乱码的解决办法
查看>>
ArchLinux安装完没有声音之解决办法
查看>>
有哪一种编程语言比其他的更安全吗?
查看>>
用JavaScript编写Chip-8模拟器
查看>>
Android 模拟登陆网站实现移动客户端
查看>>
iOS快速枚举中stop注意事项
查看>>