GNU-make makefile (gcc v4.1.2) の一部が期待どおりに機能していません。make
サブディレクトリに 4 つのライブラリがあり、ベースの /build ディレクトリで実行されている場合に再帰的にビルドしたい
/prj
|--/build
| |--makefile
| |--/Tables.lib
| | |--makefile
| |--/General.lib
| | |--makefile (etc..)
|--/lib
|--/src
/prj/build/makefile の簡単なコード:
LIB_DIR = /prj/lib
LIBRARY := libcomposition_adjustment.a libtables.a libgeneral.a libbiblio.a
DIRS := Tables.lib Composition_adjustment.lib General.lib Biblio.lib
all: $(LIBRARY)
#all: $(LIB_DIR)/libcomposition_adjustment.a # this line works
%.a : $(LIB_DIR)/%.a
$(LIB_DIR)/libtables.a:
cd Tables.lib; $(MAKE)
$(LIB_DIR)/libcomposition_adjustment.a:
cd Composition_adjustment.lib; $(MAKE)
$(LIB_DIR)/libgeneral.a:
cd General.lib; $(MAKE)
$(LIB_DIR)/libbiblio.a: libgeneral.a
cd Biblio.lib; $(MAKE)
「「すべて」が必要とするターゲット「libcomposition_adjustment.a」を作成するルールはありません。停止」と書かれています。しかし、私はライン%.a : $(LIB_DIR)/%.a
がそれを処理すると思いました。このパターン ルールを間違って作成していますか?
all:
コメントアウトされている2 行目を試してみると、期待どおりに動作します。