1.默认限执行小写的makefile
最基本的makefile
mytool: main.o tool1.o tool2.o
gcc main.o tool1.o tool2.o -o mytool
main.o: main.c
gcc main.c -c -Wall -g -o main.o
tool1.o:tool1.c
gcc tool1.c -c -Wall -g -o tool1.o
tool2.o:tool2.c
gcc tool2.c -c -Wall -g -o tool2.o
成功结果
清理.o文件
mytool: main.o tool1.o tool2.o
gcc main.o tool1.o tool2.o -o mytool
main.o: main.c
gcc main.c -c -Wall -g -o main.o
tool1.o:tool1.c
gcc tool1.c -c -Wall -g -o tool1.o
tool2.o:tool2.c
gcc tool2.c -c -Wall -g -o tool2.o
clearn:
rm *.o mytool -rf
makefile变量替换
OBJS=main.o tool1.o tool2.o #定义变量objs
CC=gcc #定义变量gcc
CFLAGS+=-c -Wall -g
mytool: $(OBJS)
$(CC) $(OBJS) -o mytool
main.o: main.c
$(CC) main.c $(CFLAGS) -o main.o
tool1.o:tool1.c
$(CC) tool1.c $(CFLAGS) -o tool1.o
tool2.o:tool2.c
$(CC) tool2.c $(CFLAGS) -o tool2.o
clearn:
rm *.o mytool -rf
更简洁的写法
OBJS=main.o tool1.o tool2.o #定义变量objs
CC=gcc #定义变量gcc
CFLAGS+=-c -Wall -g
#gcc把上述文件( $(OBJS) ) 给 -o 生成 上述(mytool) 的目标文件
mytool: $(OBJS)
$(CC) $^ -o $@
#这里和上面一样
main.o: main.c
$(CC) $^ $(CFLAGS) -o $@
tool1.o:tool1.c
$(CC) $^ $(CFLAGS) -o $@
tool2.o:tool2.c
$(CC) $^ $(CFLAGS) -o $@
clearn:
rm *.o mytool -rf
%是通配符,同一句话%代表同一个名字
这里是更更简洁的写法
OBJS=main.o tool1.o tool2.o #定义变量objs
CC=gcc #定义变量gcc
CFLAGS+=-c -Wall -g
#gcc把上述文件( $(OBJS) ) 给 -o 生成 上述(mytool) 的目标文件
mytool: $(OBJS)
$(CC) $^ -o $@
#要生成mytool,他依赖$(OBJS)即{main.o tool1.o tool2.o},.o依赖.c,
# %同名替换(%.o:%.c)
%.o:%.c
$(CC) $^ $(CFLAGS) -o $@
clearn:
rm *.o mytool -rf
这里是创建一个简单的makefile,这里的本质是同一个,更多的操作以后再看(例如makefile调用makefile)