可能重复:
Target-specific Variables as Prerequisites in a Makefile
在我的makefile中(下面简化)我有一个特定于目标的变量需要影响一个递归扩展变量,但它没有这样做 - 让我坐在这里挠挠脑袋:
NAME = MyProg
OBJECTS = $(OD)/main.o
RD = Release
OD = Foo
all: OD = $(RD)
all: $(OD) $(OD)/$(NAME).elf
$(OD):
mkdir $(OD)
$(OD)/$(NAME).elf: $(OBJECTS)
$(CC) $(LDFLAGS) -o "$@" $^
$(OD)/%.o: %.c
$(CC) $(CFLAGS) $(INCLUDES) -Wa,-a="$(OD)/$*.lst" -o "$@" "$<"
实际执行的命令如下:
gcc -O2 -Wall -Wstrict-prototypes -c -Wa,-a="Release/main.lst" -o "Foo/main.o" "main.c"
$(OD)在“.lst”表达式中正确计算,但由$(OBJECTS)错误地计算。必须是$(OBJECTS)在我的规则之外评估$(OD)...所以有可能纠正这种行为吗?我在哪里弄错了?
答案 0 :(得分:2)