gpt4 book ai didi

c - gcc-生成文件 : recipe for target 'all' failed after adding dependency rule

转载 作者:行者123 更新时间:2023-12-04 12:44:51 24 4
gpt4 key购买 nike

我有一个 Makefile,每次运行它都会失败。我一直在改变一个 Makefile,它正在将一堆文件编译到一个需要创建的目录中(如果还没有的话)。 all: 失败了,老实说我不知道​​为什么会这样。

这是我的 Makefile 的样子:

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)/*

我知道问题与 $(BINDIR) 有关,但我不知道该怎么做。我在 StackOverflow 上问的最后一个问题给了我一些资源(比如 GNU 的文档 here )。根据我的理解, $(BINDIR) 应该在我运行 make 时首先创建,然后其他规则应该没有任何问题地执行。

这是我收到的错误,我知道这意味着 $(BINDIR) 没有在其余规则执行之前创建。

user@user-Notebook:~/project/folder$ make
../bin \
../bin/program1 \
../bin/program2 \
../bin/program3
make: ../bin: Command not found
Makefile:16: recipe for target 'all' failed
make: *** [all] Error 127

我错过了什么?

最佳答案

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

$(BINDIR)(/program) 设为 会更有意义all 目标的从属,而不是命令:

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

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

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

@EDIT0:

根据@o11c 的评论,我删除了部分不正确的答案

关于c - gcc-生成文件 : recipe for target 'all' failed after adding dependency rule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52447366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com