标签:clean tor 注释 排除 blog blob https .com target
Makefile 是 Linux 下组织程序的一个工具,它的命令是 make。
(首字母M/m都可以)
【Makefile】
Makefile 编写的主旋律:
target: [prerequisities]
(TAB)[command]
【make】
了解支持的功能和选项:
$ man make # 查看完整手册 $ make --help # 快速查看格式和选项
用法示例:
$ make -s -f build.mk all # 指定 Makefile 文件为 build.mk,指定 target 是 all $ make # 默认读取 Makefile,默认 target 是文件内首个 target
【流程】
make 命令读取 Makefile 和 target;
检查 target 的依赖是否有更新,有就执行 command,没有就提示目标文件已是最新。
一个统计 controbuter 的 Makefile:
# 原始代码:https://github.com/youzan/zan/blob/master/Makefile usage = "\ Usage: make <option> authors" default: @echo $(usage) authors: @git log --format=‘%aN <%aE>‘ | sort -u > $@
@ 取消在终端展示命令。
$@ 等价于当前 target。
$^ 当前 target 的所有依赖。
$< 当前 target 依赖中的第一个。
【变量使用】
引用式(=),相互影响:
jack = $(mike) mike = $(lucy) lucy = 18 default: @echo $(jack) # 18 @echo $(mike) # 18 @echo $(lucy) # 18
展开式(:=),只取前面变量的值:
jack = $(mike) mike = $(lucy) lucy = 18 default: @echo $(jack) # 18 @echo $(mike) # 18 @echo $(lucy) # 18
【伪目标】
hellomake: gcc -o hellomake hellomake.c func.c -I. create: touch clean #.PHONY: clean clean: rm -f hellomake
分析一下上面的文件:
make,不指定 target 默认是 hellomake。
make create,执行命令 `touch clean`。
make clean,未检测到依赖变更,提示目标文件 clean 已是最新。
显然,make clean 得到了非预期效果,为了避免这类冲突,需要排除 target 成为目标文件;
打开注释 .PHONY: clean 用来标示伪目标 clean,请执行 clean 下面的命令。
【补充】
Link : http://www.cnblogs.com/farwish/p/6148023.html
标签:clean tor 注释 排除 blog blob https .com target
原文地址:http://www.cnblogs.com/farwish/p/6148023.html