gpt4 book ai didi

c - 具有不同目录的 Makefile 隐式规则

转载 作者:太空狗 更新时间:2023-10-29 15:05:23 25 4
gpt4 key购买 nike

我正在按照手册学习更多有关 Makefile 的信息,因此我决定编写代码并将此示例 ( https://www.gnu.org/software/make/manual/make.html#Letting-make-Deduce-the-Recipes ) 应用到我项目的 Makefile 中。

问题是我有一个单独的目录来存放将要生成的目标文件,据我所知,隐式规则只会在与目标文件相同的目录中查找相应的 .c 文件。

我的 makefile 看起来像这样:

objects = $(addprefix objs/, main.o interface.o \
build.o requests.o parse.o configure.o)

output: $(objects)
gcc -o output $(objects)


objs/main.o: interface.h build.h requests.h parse.h configure.h
objs/interface.o: interface.h
objs/build.o: build.h
objs/requests.o: requests.h
objs/parse.o: parse.h
objs/configure.o: configure.h

.PHONY: clean
clean:
rm output $(objects)

我的目标文件应该放在 objs/目录中,源代码文件位于项目的根目录中,如下所示:

对象/
*.c
*.h

如何在不将目标文件编译到源文件目录的情况下仍然使用隐式规则?

最佳答案

您只需定义自己的隐式规则,因为内置规则不会为您做这些。

尝试:

obj/%.o : %.c
$(COMPILE.c) $(OUTPUT_OPTION) $<

关于c - 具有不同目录的 Makefile 隐式规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39945899/

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