makefile
make命令运行时,须要一个 Makefile 文件,以告诉make命令须要怎么样的去编译和链接程序。
Makefile内容的核心是一系列的规则,这些规则告诉make程序要做的事以及做这件事所依赖的条件。
1、具体规则
vim Makefile
规则的三个要素:目标、依赖、命令
基本格式:
target: dependency
(Tab字符)command
符号 | 含义 |
---|---|
target(目标) | 通常是要产生的文件的名称 |
dependency(依赖) | 指用来输入从而产生目标的文件 |
command(命令) | 是make执行的动作,一个规则可以有多条命令,每个命令占一行。命令行的第一个字符是Tab。 |
例如:
Target=hello
Object=hello.o f1.o f2.o
$(Target):$(Object)
gcc $(Object) -o $(Target)
2、隐含规则
隐含规则能够告诉make使用传统的标准方法完成任务。
例如,生成一个目标文件的方法是使用C编译器编译C语言源程序,这个步骤所用到的命令基本都是相同的。
使用隐含规则就无须详细指定这些命令,而make能按照文件名的后缀的变化,决定所采用的规则。
例如:
hello.o:hello.c
gcc -c hello.c -o hello.o
f1.o:f1.c
gcc -c f1.c -o f1.o
f2.o:f2.c
gcc -c f2.c -o f2.o
3、make clean
在makefile最后加入clean的目标,为了重新编译所有文件得删除原来生成的文件
.PHONY:clean
#把clean声明成为目标
clean:
rm *.o $(Target)
4、make用法
make工具的基本用法如下:
make [-C dir] [-f file] [target …]
符号 | 含义 |
---|---|
-C dir | 执行时进入dir目录,默认是当前目录 |
-f file | 使用file作为Makefile |
target | 要完成的目标,目标在Makefile中定义,默认是定义的第1个目标 |