我的makefile的特定于目标的变量不会影响递归扩展变量

时间:2010-03-04 14:54:38

标签: variables makefile

  

可能重复:
  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)...所以有可能纠正这种行为吗?我在哪里弄错了?

1 个答案:

答案 0 :(得分:2)

Make手册说明了特定于目标的变量

  

“这些值仅可用   在目标的范围内   命令脚本(以及其他   特定目标的任务)。 “1

我想这就是你所看到的,特定目标 变量不会在目标本身中扩展。

你想要完成的是什么?