最基本的Makefile编写
工程文件夹下有 main.c f1.c f2.c head.h 四个文件
Makefile可以省略头文件
text:f1.o f2.o main.o //生成text的目标文件
gcc main.o f1.o f2.o -o text //具体生成的执行命令
f1.o:f1.c //生成f1.o 的目标文件
gcc -c -Wall f1.c -o f1.o //具体生成的执行命令
f2.o:f2.c
gcc -c -Wall f2.c -o f2.o
main.o:main.c
gcc -c -Wall main.c -o main.o
.PHONY:clean//伪命令 ,加上之后不管什么情况都可以执行clean
clean://清除命令
rm *.o text
~
还可以使用下面这种方式,用变量代替一些参数,功能类似宏定义
OBJS=f1.o f2.o
OBJS+=main.o
CFLAGS=-c -Wall
CC=gcc
text:$(OBJS)
$(CC) $(OBJS) -o text
f1.o:f1.c
$(CC) $(CFLAGS) f1.c -o f1.o
f2.o:f2.c
$(CC) $(CFLAGS) f2.c -o f2.o
main.o:main.c
$(CC) $(CFGLAS) main.c -o main.o
.PHONY:clean
clean:
rm *.o text
最后可以写成简单的模式,因为有些东西是可以省略的(Makefile的隐含规则)
OBJS=f1.o f2.o
OBJS+=main.o
CFLAGS=-c -Wall
CC=gcc
text:$(OBJS)
$(CC) $(OBJS) -o text
.PHONY:clean
clean:
rm *.o text
下面是最终版本
CFLAGS=-g -Wall
CC=gcc
main:main.o f1.o f2.o
.PHONY:clean
clean:
rm *.o main