形式
target ...:prerequisites ...
command
...
...
: 之后无依赖
如果冒号后什么没有,那么make
就不会自动去找它的依赖性,也就不会自动执行其后所定义的命令。 要执行其后的命令,就要在make
命令后明显得指出这个label
的名字。这样的方法非常有用,我们可以在一个makefile
中定义不用的编译或是和编译无关的命令,比如程序的打包,程序的备份,等等
clean
.PHONY : clean
clean :
-rm edit $(objects)
-
使用减号的目的是:当某些文件出现问题时,不退出,忽略继续执行后面的命令。
-file参数
指定makefile文件:make -file makelinux
include <…/dir/makefile>
在include
前面可以有空格,但是不能有Tab
健( [Tab]字符告诉make
此行是一个命令行。 )
如果文件都没有指定绝对路径或是相对路径的话,make
会在当前目录下首先寻找,如果当前目录下没有找到,那么,make
还会在下面的几个目录下找:
- 如果
make
执行时,有-I
或—include-dir
参数,那么make
就会在这个参数所指定的目录下去寻找。 - 如果目录
<prefix>/include
(一般是:/usr/local/bin
或/usr/include
)存在的话,make
也会去找。
Makefile的退出
- 如果出现错误,比如被依赖的文件找不到,那么make就会直接退出,并报错。
- 而对于所定义的命令的错误,或是编译不成功,make根本不理。
make只管文件的依赖性,即如果冒号后面的依赖文件不存在,那么Makefile退出。
生成多个执行文件
all:prog1 prog2 prog3
.PHONY all