【发布时间】:2012-08-09 19:33:58
【问题描述】:
我有一部分 GNU-make makefile (gcc v4.1.2) 没有像我预期的那样工作。如果在基本 /build 目录中运行make,我想在子目录中递归构建四个库
/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','all'需要。停止”。但我认为%.a : $(LIB_DIR)/%.a 行会处理这个问题。我错误地制定了这个模式规则?
如果我尝试第二个被注释掉的 all: 行,它会按预期工作。
【问题讨论】: