为什么Make不能识别我的变量?

时间:2015-06-13 23:04:45

标签: makefile

我有一个简短的Make脚本,如果我自己手动将Build目录作为字符串放入而不是作为变量,则该脚本有效:

CC = gcc
CFLAGS = -O2 -g -Wall -fmessage-length=0
LDFLAGS =
SRCDIR = Src
BUILDDIR = Build 
SRCS = $(SRCDIR)/Main.c
OBJS = $(SRCS:.c=.o)
LIBS =
TARGET = HelloWorld

all: dir $(SRC) Build/$(TARGET)

dir:
    mkdir -p $(BUILDDIR)

Build/$(TARGET): $(OBJS) 
    $(CC) $(LDFLAGS) $(OBJS) -o $@

$(SRCDIR).c.o:
    $(CC) $(CFLAGS) $< -o $@

clean:
    rm -f $(OBJS) $(TARGET)

它停止使用错误消息:

make: *** No rule to make target `/HelloWorld', needed by `all'.  Stop.

当我更换线路时:

all: dir $(SRC) Build/$(TARGET)

使用:

all: dir $(SRC) $(BUILDDIR)/$(TARGET)

为什么Make不用$(BUILDDIR)替换Build子句?

1 个答案:

答案 0 :(得分:3)

在您的代码中,Build

之后有一个空格
BUILDDIR = Build