不好意思問簡單的問題,但我找不到問題所在。 我有一個src
目錄,包含makefile和obj
文件夾。一個include
文件夾和一個lib
之一。該代碼提供了here。沒有制定目標的規則(在不同的目錄下製作項目)
IDIR =../include
CC=gcc
CFLAGS=-I$(IDIR)
ODIR=obj
LDIR =../lib
LIBS=-lm
_DEPS = hellomake.h
DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))
_OBJ = hellomake.o hellofunc.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
$(ODIR)/%.o: %.c $(DEPS)
$(CC) -c -o [email protected] $< $(CFLAGS)
hellomake: $(OBJ)
gcc -o [email protected] $^ $(CFLAGS) $(LIBS)
.PHONY: clean
clean:
rm -f $(ODIR)/*.o *~
它給了我下面的錯誤:
gcc -c -o obj/hellomake.o hellomake.c -I../include
make: *** No rule to make target 'obj/hellofunc.o', needed by 'hellomake'. Stop.
它使用創建.o
文件和文件hellomake相同的規則。但最後一個不起作用。 感謝您的任何意見或指導。
的例子來自這裏:(http://www.cs.colby.edu/maxwell/courses/tutorials/maketutor /) – Abolfazl
如果你的makefile在'src'中,並且你在'src'中運行它,那麼在'src'中沒有叫'hellofunc.c'的文件 。你有沒有拼寫錯誤 ('hellofun.c')? –
'hellomake.c'在'src'中''hellofunc.c'在'lib'中。你可以看看文件嗎?它只是幾個。 – Abolfazl