我想使用一個Makefile來編譯幾個.c文件和一對夫婦的定製.h文件,使一個可執行文件編譯時。然而在編譯im時收到錯誤的錯誤「沒有這樣的文件或目錄」。錯誤「沒有這樣的文件或目錄」與Makefile文件
這裏是我的Makefile中,有沒有邏輯可能的漏洞,爲什麼頭文件在編譯過程中被遺忘?
錯誤的$(BIN)main.o
規則期間發生在編譯的第21行。
這是編譯時錯誤:
[email protected]:~/Desktop/Programs/CIS2520/root$ make
gcc -Wall -g -std=c99 -c -Iinclude -c ./src/main.c
./src/main.c:4:23: fatal error: structDefns: No such file or directory
#include "structDefns"
^
compilation terminated.
makefile:21: recipe for target 'bin/main.o' failed
make: *** [bin/main.o] Error 1
[email protected]:~/Desktop/Programs/CIS2520/root$
這是生成文件:
CC = gcc
CFLAGS = -Wall -g -std=c99 -Iinclude
BIN = ./bin/
SRC = ./src/
INC = ./include/
$(BIN)main: $(BIN)main.o $(BIN)book.o $(BIN)store.o $(BIN)boardGame.o
$(CC) -o $(BIN)main $(BIN)main.o $(BIN)book.o $(BIN)store.o
$(BIN)boardGame.o
$(BIN)book.o: $(SRC)book.c $(INC)structDefns.h $(INC)funcDefns.h
$(CC) $(CFLAGS) -c $(SRC)book.c
$(BIN)boardGame.o: $(SRC)boardGame.c $(INC)structDefns.h $(INC)funcDefns.h
$(CC) $(CFLAGS) -c $(SRC)boardGame.c
$(BIN)store.o: $(SRC)store.c $(INC)structDefns.h $(INC)funcDefns.h
$(CC) $(CFLAGS) -c $(SRC)store.c
$(BIN)main.o: $(SRC)main.c $(INC)structDefns.h $(INC)funcDefns.h
$(CC) $(CFLAGS) -c $(SRC)main.c
至於文件目錄,make文件是3個文件夾,垃圾桶,SRC和外包括。 bin是我想要的對象和可執行文件,src是.c文件所在的位置,.h文件位於include文件夾中。
如果沒有看到所有的文件和目錄結構,我們無法確定。據我們所知,這可能是一個錯字。 – Evert
如果您顯示完整的編譯命令+錯誤,它也會有所幫助。 – Evert
您將兩個頭文件列爲依賴項,但在實際命令中沒有看到任何標誌來提供路徑,因此可以實際找到這些文件。也就是說,CFLAGS不包括-I $(INC)或類似的。 – Evert