gpt4 book ai didi

linux - 如何将目标词干传递给 Makefile 中的 shell 命令

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:52 25 4
gpt4 key购买 nike

我正在编写静态模式规则来生成与模式匹配的目标的依赖项列表。依赖项是通过 shell 命令生成的(文件内容提供有关依赖项的信息)。这是显式规则的示例:

f1.o: $(shell gendep src/f1/f1.source)
... (some compilation command here) ...

虽然这可行,但我不想为每个新目标重写它,因为我要维护相同的文件结构。我对静态模式规则的尝试是这样的:

%.o: $(shell gendep src/%/%.source)
...

我在将词干(% 的匹配模式)传递给 shell 命令时遇到问题。 shell 命令按字面解释它并在 src/%/%.source 上运行,这当然不存在。

我怀疑有办法将词干传递给 shell 命令,但我似乎没有找到它。这里有专家可以帮助我吗?抱歉,如果这是一个新手问题(我确实是新手问题)。

最佳答案

您尝试做的事情很困难,因为通常 Make 会在运行任何规则之前展开 $(shell ...) 指令,甚至决定必须运行哪些规则。我们可以通过 Secondary Expansion 来阻止它,一个稍微高级的 Make 技巧:

.SECONDEXPANSION:

%.o: $$(shell gendep src/$$*/$$*.source)
...

还有other methods for automatic dependency generation .

关于linux - 如何将目标词干传递给 Makefile 中的 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21950663/

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