gpt4 book ai didi

c - make 时出错 : mingw32-make: *** No rule to make target

转载 作者:行者123 更新时间:2023-11-30 16:18:34 30 4
gpt4 key购买 nike

我必须创建一个 Makefile,它从不同文件夹中的 .c 文件创建单个可执行文件。 .c 文件包含来自任何这些文件夹的头文件。根目录有3个子目录x/y、x/z、a,所有这些子目录都有一些.c和.h文件。我想从根目录编译程序。这些子目录的本质是可以随时添加/删除新的 .c 文件,因此不可能在 Makefile 中硬编码它们的名称。

到目前为止我已经创建了这个 Makefile

CC = gcc
INCLUDES = -Ix/y -Ix/z -Ia -Ilib/include
LIB = -lp -lq -lr

demo: x/y/*_d.o x/z/*_l.o a/*_m.o
$(CC) $^ $(LIB) -Llib -o b/demo.exe

%_d.o:: x/y/%.c
$(CC) $(INCLUDES) -c $<

%_l.o:: x/z/%.c
$(CC) $(INCLUDES) -c $<

%_m.o:: a/%.c
$(CC) $(INCLUDES) -c $<

我需要一个能够独立处理这种情况的解决方案。此外,如果将单个文件添加到这些文件夹之一,则应仅构建其依赖项,而不是重新构建所有 .c 文件。TIA。

最佳答案

你大部分时间都在那里。您只需要一个简单的规则即可将 .c 编译为 .o,例如

.c.o: $(CC) $(包括) -c $<

带有通配符的依赖关系是可以的。

关于c - make 时出错 : mingw32-make: *** No rule to make target,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55858932/

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