Makefile-4-书写命令
2020-10-14 23:57
656 查看
目录
只显示,不执行
作用:一般用于调试,查看make执行的顺序。
全面禁止,命令的显示:
方法二:全局(分两种)
果一个规则是以 .IGNORE 作为目标的,该规则中的所有命令将会忽略错误。
命令失败,但只终止当前规则
MAKEFLAGS
包含了 make 的参数信息。
不想让 MAKEFLAGS 往下传递的做法
中间两句就是 命令包内容
前言
- 本笔记主要记录Makefile一些概念要点。
概念
Chapter 4:书写命令
- 每条规则中的命令和操作系统 Shell 的命令行是一致的。
- 每条命令必须以 Tab 键开头,除非,命令是紧跟在依赖规则后面的分号后的。
- make 一般是使用环境变量 SHELL 中所定义的系统 Shell 来执行命令,默认情况下是 /bin/sh —— UNIX 的标准 Shell 解释执行的。
4.1 显示命令
- 是否显示命令 在命令行前使用 @ 字符,那么该命令将不被make显示出来。
-
make 执行时,带入 make 参数 -n 或 --just-print。
-
make 参数 -s 或 --silent 或 --quiet 则是全面禁止命令的显示。
4.2 命令执行 *
- 当依赖目标新于目标时,make 会一条一条的执行其后的命令。
- 如果要让上一条命令的结果应用在下一条命令时,你应该使用分号分隔这两条命令。 例子1:输出为:【当前目录路径】
exec: cd /home/lss pwd
* 例子2:输出为:/home/lss
exec: cd /home/lss; pwd
- 命令解析器寻找顺序 首先,在 SHELL 所指定的路径中找寻 --> 在当前盘符中的当 ad8 前目录中寻找 --> 在 PATH 环境变量中所定义的所有路径中寻找。
- MS-DOS 中,如果定义的命令解释器没有找到,其会给你的命令解释器加上诸如 .exe 、.com 、.bat 、.sh 等后缀。
4.3 命令出错
- 每当命令运行完后,make 会检测每个命令的返回码,码为零则成功。
- 忽略命令失败 方法一:减号 在命令前( Tab 键后)加上一个减号 - 即可。
-
给 make 加上 -i 或是 --ignore-errors 参数
-
make 的参数的是 -k 或是 --keep-going
意思是:某规则中的命令出错了,就终止该规则的执行,但继续执行其它规则。
4.4 嵌套执行 make
- 总控 Makefile + 各个子目录 Makefile。
- 父级 Makefile -C 切换到其它目录
subsystem: make -C subdir # 或者:cd subdir && make
-
传递变量到下级,声明方法:
export <variable ...>;
- 注:注意 等号:(意思是 export 后,就不是 延时变量)
export variable = value
等价于export variable := value
- 传递时默认不覆盖,加上 -e 即可覆盖下级重新赋值的变量
不想让该变量传递到下级,声明方法:
unexport <variable ...>;
注意两个变量 *
-
SHELL 和 MAKEFLAGS 这两个变量不管你是否 export,其总是要传递到下层 Makefile 中。
subsystem: cd subdir && $(MAKE) MAKEFLAGS=
-
不往下传递的 参数
make 命令中 -C , -f , -h, -o 和 -W 参数是不往下传递的。
信息打印 56c *
-
-w 或是 --print-directory 会在 make 的过程中输出目前的工作目录。如:执行
make -w时
# 进入该目录时会答应如下信息 make: Entering directory `/home/hchen/gnu/make'. # 在完成下层 make 后离开目录时: make: Leaving directory `/home/hchen/gnu/make'
* 当你使用 **-C** 参数来指定 **make** 下层 **Makefile** 时,**-w** 会被自动打开的。如果参数中有 **-s(--slient)**或是 **--no-print-directory** ,那么,**-w** 总是失效的。
4.5 定义命令包
- 相当于 C 中的函数。
- 语法以 define 开始,以 endef 结束。
- 例子: run-yacc 命令包名字
define run-yacc yacc $(firstword $^) mv y.tab.c $@ endef
- 调用方法 采用 $
foo.c:foo.y $(run-yacc)
参考
- 《GUN Makefile》
- 《跟我一起写Makefile》
相关文章推荐
- 《跟我一起写makefile》(笔记3--命令书写)
- 跟我一起写 Makefile (四)——书写命令
- 跟我一起写makefile-4(书写命令)
- Makefile详解-书写命令
- 跟我一起写Makefile(四):书写命令
- Makefile书写规则与书写命令
- Linux makefile教程之书写命令四[转]
- Makefile讲义(4)——书写命令
- 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序
- 跟我一起写Makefile:书写命令
- 很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序
- makefile 详解2 --书写命令
- linux中make命令的简单使用以及Makefile文件的书写
- [转] Gnu makefile 详细教程 - 4 : Makefile 书写命令
- 跟我一起写Makefile(9)--- 书写命令(显示命令+命令执行+命令出错+嵌套执行make+定义命令包)
- makefile 详解2 --书写命令
- 【makefile】一起写makefile(四)--makefile书写命令
- Makefile 书写命令
- Makefile完全解析PART4.书写命令
- makefile详解 (五) 书写命令