Я получил эту структуру каталогов:Makefile: правило ставить .o в другом каталоге
./src
содержит.cpp
и.h
всех необходимых мне файлов./bin
временно должен содержать.o
и.bin
. Кроме того, эту папку следует удалить при вызовеmake clean
../
содержитMakefile
Это мой текущий Makefile
:
CFLAGS = -Wall -pedantic -g
CC = g++
EXEC = flrfile
SRC_DIR = src
BIN_DIR = bin
OBJ = FixedLengthFieldsRecord.o FixedLengthRecordFile.o main.o
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
$(CC) $(CFLAGS) $(BIN_DIR)/$(OBJ) -o $(BIN_DIR)/$(EXEC)
.PHONY : clean
clean:
-rm -rf $(BIN_DIR)
Когда я бегу make
, я получаю эту ошибку:
make: *** No rule to make target `FixedLengthFieldsRecord.o', needed by `flrfile'. Stop.
Почему это?
PS: Кроме того, как я могу сделать OBJ = FixedLengthFieldsRecord.o FixedLengthRecordFile.o main.o
более общим? Я не хочу писать все .o
...
http://stackoverflow.com/questions/5178125/gnu-make-how-to-get-object-files-in-separate-subdirectory – gongzhitaao