lib (たとえばmylib) と 2 つの実行可能ファイルがあり、そのうちの 1 つ (たとえばexe1) は lib に依存しています。ファイルシステムには次のものがあります:
src
Makefile
...
lib
mylib
Makefile
...
exe1
Makefile
...
exe2
Makefile
...
そしてdirで起動することmakeですべてが構築されます。src
Makefileソース内:
EXE=exe1 exe2
LIB=mylib
all: $(LIB) $(EXE)
.PHONY: $(LIB) $(EXE)
$(LIB):
$(MAKE) -C lib/$@
$(EXE): $(LIB)
$(MAKE) -C $@
たとえば、Makefileforexe1は次のとおりです。
...
all: exe1 copy
exe1: exe1.o
$(CC) $(CFLAGS) $(OBJ) $(LDFLAGS) -o $@
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
...
私の問題は、ディレクトリ内のファイルを変更するとmylib、ライブラリは正しく再構築されますが、exe1明らかにそうではありません... の依存関係を指定せずに、以前の呼び出しで指定されたターゲット (mylib) に依存していることを確認する方法はありmakeますexe1かのファイルmakemylibexe1 Makefile
皆さん、ありがとうございました。