Makefile总结

1、Makefile由目标(Target)、依赖关系(Dependency)、命令(Command)组成。

(1)目标:可定义多个目标,默认指定第一个,make时可指定其中一个。

(2)依赖关系:在同一规则中,从左到右。在不同规则中,从上到下。

(3)命令:以Tab键开头,它可以是OS命令行的命令或make所定义的函数。

all:test
  @echo "Hello World"
test:
  @echo "Just for Fun"

("@",在命令前加@,命令不会被输出)
一条规则是由目标、先决条件以及命令组成,目标与先决条件之间的表达就是依赖关系,它指明在构建某个目标之前,必须满足的先决条件。

 

2、make是通过文件的时间戳来判定哪些文件需要重新编译。如先决条件的文件比目标更新,则运行规则中的命令重新构建目标。

 

3、假目标采用.PHONY关键字定义(必须是大写字母)。假目标不会被make当成文件处理

 

4、变量

(1)定义变量时,其值可为空。

(2)引用变量时,采用"$(变量名)"或"${变量名}"的形式

 

5、自动变量

(1)$@:用于表示一个规则中的目标。当一个规则中有多个目标时,$@所指的是其中任何造成规则命令被运行的目标

(2)$^:表示规则中所有的先决条件

(3)$<:表示规则中的第一个先决条件

例子:

.PHONY: clean

CC=gcc
RM=rm

EXE = test
OBJS = test.o main.o

$(EXE): $(OBJS)
    $(CC) -o $@ $^

%.o: %.c
    $(CC) -o $@ -c $^

clean:
    $(RM) *.o *.exe

 

posted @ 2016-11-23 22:25  chenshuyi  阅读(225)  评论(0编辑  收藏  举报