gpt4 book ai didi

makefile - 制作 : Setting target-specific variables in static pattern rules

转载 作者:行者123 更新时间:2023-12-05 05:21:49 31 4
gpt4 key购买 nike

我正在使用静态模式规则编写一个 Makefile,我希望为 TARGETS 的每个元素分配一个变量给当前目标名称(这里是词干“%”)。

TARGETS = a b c d

all : $(TARGETS)
$(TARGETS) : % : DIR = %
$(TARGETS) : % : %_setup build

a_setup :
code for a
b_setup :
code for b
...
build
code using "DIR = XX" previously configured

但是 gnumake 提示特定于目标的变量 DIR:

make: *** No rule to make target 'DIR', needed by 'a'

是否可以混合使用静态模式规则和变量赋值?谢谢!

最佳答案

根据 GNU make 手册,您不能那样做。但是,您可以使用 $@。在您的示例中,您可以直接分配 DIR=$@ 但更一般地,您可以将 $@patsubst 结合使用:

TARGETS = a b c d
all : $(TARGETS)
$(TARGETS) : DIR = $(patsubst %,%,$@)
$(TARGETS) : % : %_setup build
echo $@: DIR:$(DIR)
%_setup :
echo $@
build:
echo $@

关于makefile - 制作 : Setting target-specific variables in static pattern rules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42013532/

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