Makefile包括 目标文件、依赖文件、可执行命令三部分。
每部分的基本格式如下:
test: prog.o code.o
gcc -o test prog.o code.o
其中,第一行的test是目标文件; prog.o、code.o是依赖文件;
第二行的gcc -o test prog.o code.o是可执行命令。
整个Makefile文件都是这种格式。
以下是一些example:
———————–Makefile example 1———————————-
#this line is the comment for the Makefile
test: prog.o code.o
gcc prog.o code.o -o test
prog.o: prog.c prog.h code.h
gcc -c prog.c -o prog.o
code.o: code.c code.h
gcc -c code.c -o code.o
clean:
rm -f *.o
———————————————————————————————-
——————————-example 2(包含变量)———————————
#this line is the Makefile comment
OBJS = prog.o code.o
CC = gcc
CFLAGS = -Wall -g -O
test:${OBJS}
${CC} ${CFLAGS} ${OBJS} -o test
prog.o: prog.c prog.h code.h
${CC} ${CFLAGS} -c prog.c -o prog.o
code.o: code.c code.h
${CC} ${CFLAGS} -c code.c -o code.o
clean:
rm -f *.o
————————————————————————————————
——————————-example 3(使用Makefile的隐含规则)———————————
1,如果没有相应的编译命令,则使用隐含规则,所有的 ".c文件" 编译成与它名称相同的 ".o文件"。
2, 使用Makefile的自动变量。
#this line is the Makefile comment
OBJS = prog.o code.o
CC = gcc
test:${OBJS}
${CC} -o $@ $^
prog.o: prog.c prog.h code.h #no exec command,and will generate the prog.o
code.o: code.c code.h #no exec command,and will generate the code.o
clean:
rm -f *.o
————————————————————————————————
—————————————————–以下为我测试过的实例文件内容 :—————————————————–
========================== Makefile ===============
#this line is the commentCC = gccOBJS = my_str.oCFLAGS = -Wall -g -Oprogram: my_main.c ${OBJS} ${CC} ${CFLAGS} $^ -o $@my_str.o: my_str.c my_str.h ${CC} ${CFLAGS} -c my_str.c -o my_str.oclean: rm -f *.o
=======================================================================
==========================my_main.c=======================
想要成功,就一定要和成功的人在一起,不然反之