gcc-Makefile:添加依赖性规则后,目标“全部”的配方失败

时间:2018-09-21 15:58:25

标签: c gcc makefile

我有一个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)

我想念什么?

2 个答案:

答案 0 :(得分:3)

将其发布为答案,因为它不适合评论:

$(BINDIR) /程序 )设为 全部 目标而不是命令

all: $(BINDIR) $(BINDIR)/program1 $(BINDIR)/program2 $(BINDIR)/program3

检查[GNU]: An Introduction to Makefiles了解更多详细信息。

可以采取更进一步的措施(例如,编写处理所有文件的样式规则),以使 Makefile 更加紧凑。

@ EDIT0

根据@ o11c的评论,我删除了部分错误的答案

答案 1 :(得分:0)

目前,您的“全部”规则没有依赖关系,配方也非空。因此make正在尝试将您的依赖项列表作为shell指令执行。这就是为什么您看到命令未找到错误的原因,它来自外壳程序。删除all:之后的换行符,它应该起作用。