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

发布于 2024-11-09 11:24:27 字数 466 浏览 0 评论 0原文

嘿,我有一个简单的“主”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 最新消息或其他消息)。

有什么提示吗?

Hey, I have a simple "master" Makefile who simply calls other makefiles. I'm trying to do the following in order to build components in the right order:

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)

However, when I make, only LIB_A gets built.

(I don't even get a folder_b up-to-date message or whatever).

Any hint ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

隔岸观火 2024-11-16 11:24:27

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

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

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

You need to make all the default. You can do this in either of these ways:

  • move it to be the first target in the file
  • Add .DEFAULT_GOAL := all

Alternatively, you could run make all instead of just make.

赠佳期 2024-11-16 11:24:27

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)

Neil Butterworth solved the problem, but you can also make this makefile a little more concise:

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)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文