如果我在生成文件中有以下规则:
$(OBJ)/%.o: $(SRC)/%.c
$(CC) -c -o $@ $< $(CFLAGS)
每个匹配前缀./obj/
和后缀的文件.o
都会将其词干传递给%
,因此我可以根据其名称提供一些依赖项。
但是,假设我有这样的规则,我会一一指定我想要的目标:
OBJECTS=abc.o bca.o cba.o
$(OBJECTS): $(SRC)/%.c
$(CC) -c -o $@ $< $(CFLAGS)
如何使%
词干真正适用于当前目标名称make正在执行?只是使用%
是行不通的,也不行$@
。
请注意,我正在尝试将实际目标名称写入它自己的依赖项。例如,当make为 执行规则时abc.o
,它将包含$(SRC)/abc.c
并且仅包含它(类似于$(patsubst %.o, $(SRC)/%.c, MAGIC_TARGET_NAME_VARIABLE)
)。