我有一个Makefile,每次运行它都会失败。我一直在修改一个Makefile,该文件将一堆文件编译到一个尚未创建的目录中。 User input >> "Cars"
python should do >> cars[]
so later i can do >> cars.append("BMW")
失败了,老实说,我不知道为什么会这样。
这是我的Makefile的样子:
all:
我知道问题与CC=gcc
SRCDIR=src
INCDIR=include
BINDIR=../bin
CFLAGS = -flags
LIBS = -llibrary1 -llibrary2
all:
$(BINDIR) \
$(BINDIR)/program1 \
$(BINDIR)/program2 \
$(BINDIR)/program3
$(BINDIR)/program1: $(SRCDIR)/program1.c | $(BINDIR)
$(CC) $(CFLAGS) $< -o $@ $(LIBS)
$(BINDIR)/program2: $(SRCDIR)/program2.c | $(BINDIR)
$(CC) $(CFLAGS) $< -o $@ $(LIBS)
$(BINDIR)/program3: $(SRCDIR)/program3.c | $(BINDIR)
$(CC) $(CFLAGS) $< -o $@ $(LIBS)
$(BINDIR):
mkdir -p $@
clean:
rm -f $(BINDIR)/*
有关,但是我不知道该怎么办。我在StackOverflow上问的最后一个问题为我提供了一些资源(例如GNU文档here)。据我了解,$(BINDIR)
应该在运行make时首先创建,然后其他规则应该没有任何问题地执行。
这是我收到的错误,我知道这意味着在执行其余规则之前未创建$(BINDIR)
。
$(BINDIR)
我想念什么?
答案 0 :(得分:3)
将其发布为答案,因为它不适合评论:
将 $(BINDIR) ( /程序 )设为 全部 目标而不是命令
all: $(BINDIR) $(BINDIR)/program1 $(BINDIR)/program2 $(BINDIR)/program3
检查[GNU]: An Introduction to Makefiles了解更多详细信息。
可以采取更进一步的措施(例如,编写处理所有文件的样式规则),以使 Makefile 更加紧凑。
@ EDIT0 :
根据@ o11c的评论,我删除了部分错误的答案
答案 1 :(得分:0)
目前,您的“全部”规则没有依赖关系,配方也非空。因此make正在尝试将您的依赖项列表作为shell指令执行。这就是为什么您看到命令未找到错误的原因,它来自外壳程序。删除all:
之后的换行符,它应该起作用。