我正在尝试编写一个将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