使用file 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_guard)
touch $@
clean:
rm -rd obj当我打电话的时候
make target我在obj/hello.out中获得了一个文件,而不是像我预期的那样得到obj/debug/hello.out。知道我错过了什么吗。
发布于 2016-11-05 04:55:17
当makefile第一次被make解析时,echoit规则中的echoit被扩展;目标特定的变量用于菜谱,而不是规则,如手动指出。
与自动变量一样,这些值仅在目标的配方上下文中可用(以及其他特定于目标的赋值)。
我不太清楚你想要完成什么,但看起来你想要的是
target: $(_OBJ:%=obj/debug/%)https://stackoverflow.com/questions/40434191
复制相似问题