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

时间:2015-01-13 22:03:52

标签: makefile

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

ifndef VARA
    VARB := $(CURDIR:/Dev/home/ajhome/%=/home/%)
    export VARA:= $(VARB)
endif

提前欣赏很多。

1 个答案:

答案 0 :(得分:5)

不应将其视为%=%=具有不同的功能。这是一种模式替代:

$(VARNAME:pattern1=pattern2)

%是模式中的占位符。这通常用于(例如)从源文件中获取目标文件的名称,例如

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

# $(OBJS) is foo.o bar.o

在您的情况下,它会占用$(CURDIR)中的目录,并将/Dev/home/ajhome/替换为/home/。好吧,如果$(CURDIR)是一个目录列表,它会为每个目录执行此操作,但是变量名称表明它们中只有一个,所以我就是这样。