[英]Makefile error: No such file or directory
我有這個目錄結構:
.\\src
包含所有源代碼( .h
和.cpp
) .\\bin
應該包含所有.o
和.bin
.
有Makefile
這是我目前的Makefile:
CFLAGS = -Wall -pedantic -g
CC = g++
EXEC = flrfile
SRC_DIR = src
BIN_DIR = bin
SOURCES := $(wildcard $(SRC_DIR)/*.cpp)
OBJ := $(patsubst $(SRC_DIR)/%,%,$(SOURCES))
OBJ := $(patsubst %.cpp,%.o,$(OBJ))
OBJ := $(addprefix ../$(BIN_DIR)/,$(OBJ))
all: flrfile
../$(BIN_DIR)/%.o: $(SRC_DIR)/%.cpp $(SRC_DIR)/%.h
$(CC) $(CFLAGS) -c $(SRC_DIR)/%.cpp -o $@
$(EXEC): $(OBJ)
@mkdir -p $(BIN_DIR)
$(CC) $(CFLAGS) $(BIN_DIR)/$(OBJ) -o $(BIN_DIR)/$(EXEC)
.PHONY : clean
clean:
-rm -rf $(BIN_DIR)
當我運行make
我收到此錯誤:
g++ -Wall -pedantic -g -c src/%.cpp -o ../bin/FixedLengthFieldsRecord.o
g++: error: src/%.cpp: No such file or directory
g++: fatal error: no input files
compilation terminated.
make: *** [../bin/FixedLengthFieldsRecord.o] Error 4
為什么是這樣? 說實話,我對Makefile幾乎沒有理解......
正確的編譯行應如下所示:
$(BIN_DIR)/%.o: $(SRC_DIR)/%.cpp $(SRC_DIR)/%.h
$(CXX) -o $@ -c $< $(CFLAGS)
這意味着:“對於$(BIN_DIR)中匹配模式”%.o“的每個文件,使用關聯的$(SRC_DIR)/%。cpp作為參數進行編譯(第一個依賴項)
附加說明:我懷疑有些缺少依賴項:通常,.c或cpp源文件不僅依賴於相應的頭文件,還可能包含項目中的其他頭文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.