簡體   English   中英

Makefile錯誤:沒有這樣的文件或目錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM