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

vds*_*dsf 7 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)
Run Code Online (Sandbox Code Playgroud)

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

(我甚至没有获得folder_b最新消息或其他什么).

任何提示?

小智 8

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

  • 将它移动到文件中的第一个目标
  • .DEFAULT_GOAL := all

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

  • 如果将来有人读到这个,你要找的语法是`.DEFAULT_GOAL:= all`(或者你的目标是什么). (2认同)

Bet*_*eta 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)
Run Code Online (Sandbox Code Playgroud)