这个 Makefile 语句中的两个百分号 % 符号是什么意思?
What does two percent % symbols mean in this Makefile sentence?
我在Makefile中遇到了这行代码。我一直在努力寻找解释但无法找到。如果您有线索,有人可以提示吗?特别是这个 Makefile 语句中的符号 %= 是什么意思。
ifndef VARA
VARB := $(CURDIR:/Dev/home/ajhome/%=/home/%)
export VARA:= $(VARB)
endif
提前多谢。
那不应该读作%=
,%
和=
有不同的功能。这是一个模式替换:
$(VARNAME:pattern1=pattern2)
而%
是模式中的占位符。这通常用于(例如)从源文件中获取目标文件的名称,例如
SRCS = foo.c bar.c
OBJS = $(SRCS:%.c=%.o)
# $(OBJS) is foo.o bar.o
在您的情况下,它将获取 $(CURDIR)
中的目录并将其开头的 /Dev/home/ajhome/
替换为 /home/
。好吧,如果 $(CURDIR)
是一个目录列表,它将对每个目录都这样做,但是变量名称表明其中只有一个,所以我将使用它。
我在Makefile中遇到了这行代码。我一直在努力寻找解释但无法找到。如果您有线索,有人可以提示吗?特别是这个 Makefile 语句中的符号 %= 是什么意思。
ifndef VARA
VARB := $(CURDIR:/Dev/home/ajhome/%=/home/%)
export VARA:= $(VARB)
endif
提前多谢。
那不应该读作%=
,%
和=
有不同的功能。这是一个模式替换:
$(VARNAME:pattern1=pattern2)
而%
是模式中的占位符。这通常用于(例如)从源文件中获取目标文件的名称,例如
SRCS = foo.c bar.c
OBJS = $(SRCS:%.c=%.o)
# $(OBJS) is foo.o bar.o
在您的情况下,它将获取 $(CURDIR)
中的目录并将其开头的 /Dev/home/ajhome/
替换为 /home/
。好吧,如果 $(CURDIR)
是一个目录列表,它将对每个目录都这样做,但是变量名称表明其中只有一个,所以我将使用它。