Makefile
1、在Linux中使用make没了来编译程序,特别是大程序;而make命令所执行的动作依赖于Makefile文件。
2、
hello:hello.c
gcc -o hello hello.c
新建一个Makefile,将上面的两行代码放到Makefile文件中;(注意:第二行必须以Tab键缩进开始,不能以空格)
3、make命令根据文件更新的时间来决定哪些文件需要重新编译,这使得可以避免编译已经编译过的、没有变化的程序,可以大大提高编译效率。
4、Makefile样式:
目标(target):依赖
<tab>命令(command)
目标是要生成的文件的名称
依赖是用来产生目标的材料(如源文件)
命令式生成目标时执行的动作(每个命令前必须是一个Tab字符)
5、Makefile文件里的变量和赋值
有两种变量:延时变量(真正使用时这个变量才确定 = , ?=)
立即变量(定义时它的值就已经确定了, :=)
变量的引用:
src :=$(shell ls *.c)
objs:=$(patsubst %.c ,%.o,$(src))
$(src)为变量的利用;
$(函数名 参数名)Makefile函数调用的格式:
patsubst %.c ,%.o,$(src)) 为函数的引用;
$@表示规则的目标文件名
$^表示所有依赖的名字
$<表示第一个依赖的文件名
下面是一个完整的Makefile文件:
01 src :=$(shell ls *.c)
02 objs:=$(patsubst %.c ,%.o,$(src))
03
04 test:$(objs)
05 gcc -o $@ $^
06
07 %.o:%.c
08 gcc -c -o $@ $<
09
10 clean:
11 rm -f test *.o