我有這樣的目錄結構:Makefile的錯誤:沒有這樣的文件或目錄
.\src
包含了所有的源代碼(.h
和.cpp
).\bin
應有的一切.o
和.bin
.
已有Makefile
這是我目前的Make文件:
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 [email protected]
$(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的理解,說實話......
相關:因爲您正在使用'g ++',所以您應該使用'CXXFLAGS'。另外,[C/C++/Objective C Toolchain Hardening]有一個全新的世界(https://www.owasp.org/index.php/C-Based_Toolchain_Hardening)。自由軟件世界的許多人都不理解它。 – jww 2013-04-03 20:29:38
而不是使用$(CC)(併爲其分配另一個值,而不是其默認值),您可以使用$(CXX),其默認值通常爲g ++。 – kebs 2013-04-03 20:31:21