私はLinux上でCで書いた小規模なアプリケーション用のmakefileを書こうとしています。現在のところ、すべてのソースファイル.c
は最上位ディレクトリにあり、すべてのヘッダファイルは のインクルードディレクトリにあります。これは私がこれに使ったメイクファイルです。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を使うことでした。それで、再帰的なmakeに不満を抱かせるページがたくさんあることが分かります。誰もこの権利を行う方法としてこれで私を助けてもらえますか? ありがとう
_your_プロジェクトに関連する「これらのページ」に関する苦情はありますか?そうでなければ、基本的なビルドを動作させるのはかなり簡単なので、再帰的なmakefileを使って行ってください。 – HonkyTonk