我試圖寫一個小規模的應用程序,我用C在Linux下寫了一個makefile多個子目錄。目前我所有的源文件.c
都位於頂級目錄中,並且所有頭文件都在 包含目錄中。這是我用於此的makefile。包括一個make文件
IDIR =include
CC=gcc
CFLAGS=-I$(IDIR)
ODIR=obj
_OBJ = main.o kernel.o user_app.o myargs.o ofp_msgs.o pkt_ip.o pkt_ether.o pkt_tcp.o pkt_udp.o pkt_icmp.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
#DEPS = ofp_msgs.h
$(ODIR)/%.o: %.c
$(CC) -c -o [email protected] $< $(CFLAGS)
all: jam
jam: $(OBJ)
gcc -o [email protected] $^ $(CFLAGS) -lpthread
.PHONY: clean
clean:
rm -f $(ODIR)/*.o *~ jam
它工作正常,但我想的是,比如我做一個子目錄叫"Packet"
和我所有的數據包解析文件,即"pkt_ip.c, pkt_tcp.c etc"
都應該在該目錄中爲他們的頭文件還應該在頂層目錄它"toplevel/include"
。我做了一些搜索,最常用的方法是使用遞歸make。然後我看到很多網頁抱怨遞歸製作。任何人都可以請幫助我,因爲如何做到這一點的權利? 謝謝
是對「那些頁面」投訴相關_your_項目?如果沒有,那麼使用遞歸makefile即可,因爲獲得基本構建工作非常容易。 – HonkyTonk 2012-04-17 11:14:19