Makefile - 如何调用具有依赖项的其他makefile

时间:2011-05-25 21:56:49

标签: makefile

嘿,我有一个简单的“主”Makefile,只需调用其他makefile。我正在尝试执行以下操作,以便按正确的顺序构建组件:

LIB_A = folder_a
LIB_B = folder_b
LIB_C = folder_c

MY_TARGETS = $(LIB_A) $(LIB_B) $(LIB_C)

.PHONY: $(LIB_A)
$(LIB_A):
    @$(MAKE) -C $@;

.PHONY: $(LIB_B)
$(LIB_B):
    @$(MAKE) -C $@;

.PHONY: $(LIB_C)
$(LIB_C): $(LIB_A) $(LIB_B)
    @$(MAKE) -C $@;

.PHONY: all 
all: $(MY_TARGETS)

但是,当我制作时,只会构建LIB_A。

(我甚至没有获得folder_b最新消息或其他内容。)

任何提示?

2 个答案:

答案 0 :(得分:8)

您需要将all设为默认值。您可以通过以下任一方式执行此操作:

  • 将其移至文件中的第一个目标
  • 添加.DEFAULT_GOAL := all

或者,您可以运行make all而不仅仅是make

答案 1 :(得分:8)

Neil Butterworth解决了这个问题,但你也可以让这个makefile更简洁:

LIB_A = folder_a
LIB_B = folder_b
LIB_C = folder_c

MY_TARGETS = $(LIB_A) $(LIB_B) $(LIB_C)

.PHONY: all $(MY_TARGETS)
all: $(MY_TARGETS)

$(MY_TARGETS):
    @$(MAKE) -C $@;

$(LIB_C): $(LIB_A) $(LIB_B)