使用vpath查找生成的文件

我正在尝试编写一个将load编译为*.c并将其移动到*.o的Makefile。但是,当我尝试链接obj/中的所有*.o文件时,出现错误,好像找不到生成的文件。我试图用正确的路径为代码添加前缀,但是无论如何都找不到它。 是否有人对我需要更改代码的内容有任何想法,以便它可以找到main文件。 这是我的Makefile:

*.o

欢迎提出任何建议。我读过不建议您使用vpath查找生成的文件。但这是一项任务,我必须以这种方式使用它。 如果我取消注释这两行并注释EXEC = main CflaGS = -c -Wall -g -I include -std=c99 OBJECTS = main.o jeu.o grille.o io.o EXEC = main DOCGEN = doxygen vpath %.c src/ vpath %.h include/ vpath %.o obj/ vpath main bin/ all: main main: $(OBJECTS) @echo "\n==== Linking $@ $^ ====" @gcc -o $@ $(OBJECTS) @mkdir -p bin @mv $@ bin/ #@mkdir -p obj #@mv *.o obj/ main.o: io.h jeu.h io.o: io.h jeu.o: jeu.h %.o: %.c grille.h @echo "\n---- Rule " $@ $< "----" @gcc $(CflaGS) $< @mkdir -p obj @mv $@ obj/ doc: @mkdir -p doc @$(DOCGEN) clean: @rm -rf doc/ @rm -rf bin/ @rm -rf obj/ @rm -f *.xz 规则的最后两行,那么代码会很好用,但是我不能这样做。 这是执行时的错误:

%.o
xiaomeng722 回答:使用vpath查找生成的文件

考虑将编译规则更改为引用对象文件夹:

obj/%.o: %.c 
    [ -d obj ] || mkdir -p obj
    gcc -o $@ $<
本文链接:https://www.f2er.com/3153050.html

大家都在问