gpt4 book ai didi

makefile - 如何在make模式规则中的依赖项中使用模式相关变量

转载 作者:行者123 更新时间:2023-12-04 03:24:19 26 4
gpt4 key购买 nike

我想用模式相关变量中的依赖项定义 GNU make 模式规则。我想要的是这样的:

%.exe : $(%_EXE_SOURCES) $(%_EXE_RESOURCES)
$(CSC_V)$(CSC) $(CSCFLAGS) $($*_EXE_CSCFLAGS) -target:exe \
-out:$@ $($*_EXE_SOURCES) $($*_EXE_RESOURCES)

然后定义类似的东西
FOO_EXE_SOURCES = src/Foo.cs
all: Foo.exe

该规则提出了要构建的工作;在规则的主体中, $($*_EXE_SOURCES) 变量被扩展为 $(FOO_EXE_SOURCES) ,它扩展为 src/Foo.cs 。但是,依赖项没有正确扩展;更改 src/Foo.cs 不会导致 Foo.exe 被重建。

我怀疑这实际上不能在 make 中完成,但也许有人有一个类似工作的 make 片段?

最佳答案

您可以使用“二次扩展”。这样的事情应该可以完成您正在寻找的内容:

Foo_EXE_SOURCES := foo.cs bar.cs baz.cs
all: Foo.exe

.SECONDEXPANSION:
%.exe: $$($$*_EXE_SOURCES)
$(CSC_V)$(CSC) $(CSCFLAGS) $($*_EXE_CSCFLAGS) -target:exe \
-out:$@ $($*_EXE_SOURCES) $($*_EXE_RESOURCES)

启用二级扩展允许在先决条件列表中使用自动变量(即本例中的 $*),否则这是行不通的。

关于makefile - 如何在make模式规则中的依赖项中使用模式相关变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1856991/

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