Makefile 其他目标不';t更新基本目标的目标特定变量
使用流动生成文件:Makefile 其他目标不';t更新基本目标的目标特定变量,makefile,gnu-make,Makefile,Gnu Make,使用流动生成文件: ODIR = obj _OBJ = hello.out OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ)) dir_guard=@mkdir -p $(@D) echoit: $(OBJ) @echo $(BAR) target: ODIR=obj/debug target: OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ)) target: echoit $(ODIR)/hello.out: $(dir
ODIR = obj
_OBJ = hello.out
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
dir_guard=@mkdir -p $(@D)
echoit: $(OBJ)
@echo $(BAR)
target: ODIR=obj/debug
target: OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
target: echoit
$(ODIR)/hello.out:
$(dir_guard)
touch $@
clean:
rm -rd obj
当我打电话时
make target
我在obj/hello.out中得到了一个文件,而不是我所期望的obj/debug/hello.out。任何我缺少的想法。$(OBJ)
当make第一次解析makefile时,扩展echoit
规则中的;特定于目标的变量用于食谱,而不是手册中的规则
与自动变量一样,这些值仅在目标配方的上下文中可用(以及在其他特定于目标的分配中)
我不太确定你想在这里完成什么,但看起来你在寻找类似的东西
target: $(_OBJ:%=obj/debug/%)