如果我在一个makefile中有以下规则:
每个文件名以前缀
但是,假设我有这种规则,我要逐个指定我想要的目标:
$(OBJ)/%.o: $(SRC)/%.c
$(CC) -c -o $@ $< $(CFLAGS)
每个文件名以前缀
./obj/
和后缀.o
结尾的文件,它的stem将被传递给%
,因此我可以根据其名称提供一些依赖关系。但是,假设我有这种规则,我要逐个指定我想要的目标:
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)
。
$@
前面添加$(OBJ)/
。可能是因为我已经在$(OBJECTS)
变量中包含了每个文件名的相对路径,所以 make 可以检查文件是否是最新的... - Toribio$(OBJECTS)
的存在,因此每次运行make都会重新生成它们。你如何处理这个问题?@FlávioToribio @carl-norum @ssavec - Michael