嘿,我有一个简单的“主”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最新消息或其他内容。)
任何提示?
答案 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)