我有一部分 GNU-make makefile (gcc v4.1.2) 没有按我的预期工作。make
我在子目录中有四个库,如果在基本 /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)
它说“没有规则来制作'all'需要的目标'libcomposition_adjustment.a'。停止”。但我认为这条线%.a : $(LIB_DIR)/%.a
会处理这个问题。我错误地制定了这个模式规则?
all:
如果我尝试注释掉的第二行,它会按预期工作。