project/
├── Makefile # 主 Makefile
├── src/ # 模組 A
│ ├── guo.c guo.h
│ ├── zhi.c zhi.h
│ ├── yuan.c yuan.h
│ └── Makefile
└── exit/ # 模組 B
├── qian.c qian.h
├── ru.c ru.h
├── shi.c shi.h
└── Makefile
.PHONY: all
CC = gcc
all: guo.o zhi.o yuan.o
guo.o: guo.c
$(CC) -c guo.c
cp guo.o ../
zhi.o: zhi.c zhi.h
$(CC) -c zhi.c
cp zhi.o ../
yuan.o: yuan.c yuan.h
$(CC) -c yuan.c
cp yuan.o ../
clean:
rm -f *.o
feifei: guo.o zhi.o yuan.o qian.o ru.o shi.o
gcc guo.o zhi.o yuan.o qian.o ru.o shi.o -o feifei
guo.o zhi.o yuan.o:
cd ./src && $(MAKE)
qian.o ru.o shi.o:
cd ./exit && $(MAKE)
clean:
rm -f *.o feifei
cd subdir && $(MAKE) 將編譯委派給子目錄cp *.o ../ 供主目錄連結main(),否則連結錯誤.o 目標依賴對應 .c/.h,修改頭檔自動重編VPATH 或 vpath 避免複製 .o 檔include ../common.mk 共享編譯旗標gcc -MM 生成 .d 檔make -j4作者:guozhiyuan20095318