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 $@
たとえば、Makefile
forexe1
は次のとおりです。
...
all: exe1 copy
exe1: exe1.o
$(CC) $(CFLAGS) $(OBJ) $(LDFLAGS) -o $@
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
...
私の問題は、ディレクトリ内のファイルを変更するとmylib
、ライブラリは正しく再構築されますが、exe1
明らかにそうではありません... の依存関係を指定せずに、以前の呼び出しで指定されたターゲット (mylib) に依存していることを確認する方法はありmake
ますexe1
かのファイルmake
mylib
exe1
Makefile
皆さん、ありがとうございました。