这个Makefile句子中两个%符号的含义是什么?

lin*_*cao 0 makefile

我在Makefile中遇到了这行代码.我已经尽力找到解释但却无法解释.如果你有线索,有人可以通过提示吗?特别是,这个Makefile句子中的符号%=是什么意思.

ifndef VARA
    VARB := $(CURDIR:/Dev/home/ajhome/%=/home/%)
    export VARA:= $(VARB)
endif
Run Code Online (Sandbox Code Playgroud)

提前欣赏很多.

Win*_*ute 5

这不应该被解读为%=,在%=具有不同的功能.这是一种模式替代:

$(VARNAME:pattern1=pattern2)
Run Code Online (Sandbox Code Playgroud)

并且%是模式中的占位符.例如,通常使用(例如)从源文件中获取目标文件的名称

SRCS = foo.c bar.c
OBJS = $(SRCS:%.c=%.o)

# $(OBJS) is foo.o bar.o
Run Code Online (Sandbox Code Playgroud)

在您的情况下,它将获取目录$(CURDIR)并替换/Dev/home/ajhome/它的开头/home/.好吧,如果$(CURDIR)是一个目录列表,它将为每个目录执行此操作,但变量名称表明其中只有一个,所以我将继续使用它.