如果我在makefile中有以下规则:
$(OBJ)/%.o: $(SRC)/%.c
$(CC) -c -o $@ $< $(CFLAGS)
Run Code Online (Sandbox Code Playgroud)
每个匹配前缀./obj/和sufix的文件.o都会将其传递给它%,因此我可以根据其名称提供一些依赖项.
但是,假设我有这样的规则,我逐一指定我想要的目标:
OBJECTS=abc.o bca.o cba.o
$(OBJECTS): $(SRC)/%.c
$(CC) -c -o $@ $< $(CFLAGS)
Run Code Online (Sandbox Code Playgroud)
如何让%词干实际上对当前目标名称make有效?只是使用%不起作用$@.
请注意,我正在尝试将实际目标名称写入其自己的依赖项.例如,当make正在执行规则时abc.o,它将包括$(SRC)/abc.c它(就像$(patsubst %.o, $(SRC)/%.c, MAGIC_TARGET_NAME_VARIABLE)).
Car*_*rum 11
您可以替换此规则:
$(OBJECTS): $(SRC)/%.c
Run Code Online (Sandbox Code Playgroud)
有:
$(OBJECTS) : %.o : $(SRC)/%.c
Run Code Online (Sandbox Code Playgroud)
如果您仍希望在那里构建它们,则需要将其添加$(OBJ)到-o配方的一部分:
$(OBJECTS) : %.o : $(SRC)/%.c
$(CC) -c -o $(OBJ)/$@ $< $(CFLAGS)
Run Code Online (Sandbox Code Playgroud)