有关一点Makefile
三个 比较有用的变量是 $@, $<和 $^ (这些变量不需要括号括住)。 $@ 扩展成当前规则的目的文件名, $< 扩展成依靠列表中的第 一个依靠文件,而 $^ 扩展成整个依靠的列表(除掉了里面所有重 复的文件名)。利用这些变量,我们可以把上面的 makefile 写成:
=== makefile 开始 ===
OBJS = foo.o bar.o
CC = gcc
CFLAGS = -Wall -O -g
myprog : $(OBJS)
$(CC) $^ -o $@
foo.o : foo.c foo.h bar.h
$(CC) $(CFLAGS) -c $<-o $@
bar.o : bar.c bar.h
$(CC) $(CFLAGS) -c $<-o $@
//
可简化为:
OBJS = foo.o bar.o
CC = gcc
EXEC=myprog
CFLAGS = -Wall -O -g
all:$(EXEC)
$(EXEC): $(OBJS)
$(CC) $(OBJS) $(CFLAGS) -o $@
=== makefile 开始 ===
OBJS = foo.o bar.o
CC = gcc
CFLAGS = -Wall -O -g
myprog : $(OBJS)
$(CC) $^ -o $@
foo.o : foo.c foo.h bar.h
$(CC) $(CFLAGS) -c $<-o $@
bar.o : bar.c bar.h
$(CC) $(CFLAGS) -c $<-o $@
//
可简化为:
OBJS = foo.o bar.o
CC = gcc
EXEC=myprog
CFLAGS = -Wall -O -g
all:$(EXEC)
$(EXEC): $(OBJS)
$(CC) $(OBJS) $(CFLAGS) -o $@