Makefile
一、基础
1. 定义变量
makefile
var = code.lmcw.art/gokits/log
deps
go get $(var)
2. 清空目标文件等
makefile
.PHONY clean
clean:
-rm xxx
-rm
的 - 表示即便删除出错也忽略错误继续执行下去。
3. Makefile 文件内容
- 显示规则:编写者明确指定的命令。
- 隐晦规则:
make
命令支持的自动推导规则。 - 变量定义。
- 文件指示:
- 在 Makefile 中引用另一个 Makefile。
- 根据某些情况指定
Makefile
中的有效部分,就像C
语言中的预编译#if
一样。 - 定义一个多行的命令。
- 注释:使用 # 注释。
4. 引用其他 Makefile
makefile
include <filename>
include foo.Makefile *.mk $(mkfile)
文件查找规则:
- 如果文件都没有指定绝对路径或是相对路径的话,make 会首先在当前目录下寻找。
- 如果 make 执行时,有
-I
或--include-dir
参数,那么 make 就会在这个参数所指定的目录下去寻找。 - 如果目录
<prefix>/include
(一般是:/usr/local/bin
或/usr/include
)存在的话,make 也会去找。
文件缺失处理:
make 会生成一条警告信息,并继续载入其它的文件。
一旦完成 makefile 的读取,make 会再重试这些没有找到,或是不能读取的文件,如果还是不行,make 才会出现一条致命信息。
如果你想让 make 不理那些无法读取的文件,而继续执行,你可以在
include
前加一个减号-
。如:makefile-include <filename>
5. 环境变量 MAKEFILES
如果你的当前环境中定义了环境变量 MAKEFILES ,那么,make 会把这个变量中的值做一个类似于 include 的动作。这个变量中的值是其它的 Makefile,用空格分隔。只是,它和 include 不同的是,从这个环境变量中引入的 Makefile 的“目标”不会起作用,如果环境变量中定义的文件发现错误,make 也会不理。