1什么是makefile
Makefile文件描述了整个程序的编译,连接等规则。
2Makefile的规则
Makefile 中最重要的组成部分是“规则”
规则:用于说明如何生成目标文件,规则的格式如下:
targets : prerequisites
command
目标 : 依赖
(Tab键) 命令
命令的前面需要以【Tab】键开始
例子:假如有main.c func1.c func2.c要编绎与hello(下同)
hello:main.o func1.o func2.o
gcc func1.o func2.o main.o -o hello
main.o:main.c
gcc -c main.c
func1.o:func1.c
gcc -c func1.c
func2.o:func2.c
gcc -c func2.c
3Makefile的变量修改
如果要为hello目标添加一个依赖,如:func3.o,该如何修改?
obj=main.o func1.o func2.o func3.o
hello:$(obj)
gcc $(obj) -o hello
在makefile中,存在系统默认的自动化变量
v $^:代表所有的依赖文件
v $@:代表目标@
v $<:代表第一个依赖文件
例:
hello: main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
=》
hello: main.o func1.o func2.o
gcc $^ -o $@
4Mafile伪目标
Makefile中把那些没有任何依赖,只有命令的目标称为“伪目标”(phony target)。
“.PHONY” 将“clean”目标声明为伪目标
接上面的例子:
.PHONY : clean
clean :
rm –f hello main.o func1.o func2.o
5Makefile杂项
Makefile中“#”字符后的内容被视作注释。
@:取消回显
6Makefile识别的文件名
make命令默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当名字不为这两者之一时,可以使用如下方法指定:
make -f 文件名
Makefile文件描述了整个程序的编译,连接等规则。
2Makefile的规则
Makefile 中最重要的组成部分是“规则”
规则:用于说明如何生成目标文件,规则的格式如下:
targets : prerequisites
command
目标 : 依赖
(Tab键) 命令
命令的前面需要以【Tab】键开始
例子:假如有main.c func1.c func2.c要编绎与hello(下同)
hello:main.o func1.o func2.o
gcc func1.o func2.o main.o -o hello
main.o:main.c
gcc -c main.c
func1.o:func1.c
gcc -c func1.c
func2.o:func2.c
gcc -c func2.c
3Makefile的变量修改
如果要为hello目标添加一个依赖,如:func3.o,该如何修改?
obj=main.o func1.o func2.o func3.o
hello:$(obj)
gcc $(obj) -o hello
在makefile中,存在系统默认的自动化变量
v $^:代表所有的依赖文件
v $@:代表目标@
v $<:代表第一个依赖文件
例:
hello: main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
=》
hello: main.o func1.o func2.o
gcc $^ -o $@
4Mafile伪目标
Makefile中把那些没有任何依赖,只有命令的目标称为“伪目标”(phony target)。
“.PHONY” 将“clean”目标声明为伪目标
接上面的例子:
.PHONY : clean
clean :
rm –f hello main.o func1.o func2.o
5Makefile杂项
Makefile中“#”字符后的内容被视作注释。
@:取消回显
6Makefile识别的文件名
make命令默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当名字不为这两者之一时,可以使用如下方法指定:
make -f 文件名