gcc -c -o sub/sub_int.o sub/sub_int.c -ggdb
#get sub_oat.o target
sub_oat.o:sub/sub_oat.c sub/sub.h
gcc -c -o sub/sub_oat.o sub/sub_oat.c -ggdb
#get main.o target
main.o:main.c add/add.h sub/sub.h
gcc -c -o main.o main.c -Iadd -Isub -ggdb
#clean project
clean:
rm -f cacu add/add_int.o add/add_oat.o \
sub/sub_int.o sub/sub_oat.o main.o
当需要编译工程时,直接在工程目录中执行 make 即可。如果想清除编译过程中生成的
目标文件和 cacu,执行 make clean 即可。
1.3.3. 使用用户自定义变量的 Makele
在 Makele 文件中,用户可以自定义变量,方便用户修改参数。
使用变量后,原本冗长的文件可以化简为:
CC = gcc
CFLAGS = -Iadd -Isub -O2
OBJS = add/add_int.o add/add_oat.o sub/sub_oat.o sub/sub_int.o main.o
TARGET = cacu
RM = rm -f
$(TARGET):$(OBJS)
$(CC) -o $(TARGET) $(OBJS) $(CFLAGS)
$(OBJS):%o:%c
$(CC) -c $(CFLAGS) $< -o $@
clean:
$(RM) $(TARGET) $(OBJS)
NOTE:$(OBJS):%.o:%.c 中 %.o:%.c 是将 $(OBJS) 中以 .o 结尾的文件替换成以 .c 结尾的
文件。
其中 $< 和 $@ 是自动化变量,下一节会介绍。
1.3.4. 使用预定义变量的 Makele
在 Makele 中还有一些变量是系统预定义的,用户可以直接使用。