gpt4 book ai didi

makefile - GNU make - 在另一个 makefile 中引用目标

转载 作者:行者123 更新时间:2023-12-05 07:48:10 34 4
gpt4 key购买 nike

前言:

是的,我的makefile写的不好。
不,我/我们没有写;我们从另一家公司继承了这个代码库。
我想知道是否可以在不重写它们的情况下解决我的问题。

问题

有没有办法从另一个 makefile 中引用目标并将其用作先决条件?

假设你有:

all: libs binary

binary: # I need to add prereqs here
blah
blah2
blah3

对于 binary,我需要将其他 makefile 中的目标作为先决条件。
我不能只包含那些 makefile 和那些目标,因为这些 makefile 定义相同的变量但具有不同的值。

是否可以这样做:

binary: C:/mk1:foo C:/mk2:bar
blah
blah2
blah3

更新

如果不清楚,makefilesC:/mk1C:/mk2 是同一个 makefile 项目的一部分,该项目正在通过一些顶级 makefile 执行make --jobs=X 因此理论上所有的 makefile 都可以并行生成。

最佳答案

有时 Recursive Make [duhn-duhn-duhnnnn!] 是完成这项工作的正确工具:

binary: foo bar
blah
blah2
blah3

.PHONY: foo bar

foo:
$(MAKE) -f mk1 $@

bar:
$(MAKE) -f mk2 $@

PHONY 强制 Make 执行这些规则并调用其他 makefile 以(可能)重建 foobar,即使它们已经存在(因为这个 makefile 不知道他们可能有什么先决条件)。

关于makefile - GNU make - 在另一个 makefile 中引用目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38924065/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com