Проблема, генерирующая зависимости в использовании Make-файла - MM

Я плохо знаком с Make-файлами и g ++, и я поражен проблемой при генерации зависимостей использования файлов проекта - флаг MM. Я отправляю Make-файл, который я использую для Вашего внимания. Смотрите.

OUTPUT_ROOT := output/
SOURCE_ROOT := source/

TITLE_NAME := TestProj 

SOURCES := \
 MyFile.cpp \
 stdAfx.cpp \
 Main.cpp \

OUT_DIR  := $(OUTPUT_ROOT)

OUT_O_DIR := $(OUT_DIR)

OBJS = $(SOURCES:%.cpp=$(OUT_O_DIR)%.o)
DEPS = $(OBJS:%.o=%.d)
DIRS = $(subst /,/,$(sort $(dir $(OBJS))))
SOURCE_TARGET = $(SOURCES:%.cpp=$(SOURCE_ROOT)%.cpp)
OUTPUT_TARGET = $(OUT_DIR)$(TITLE_NAME)

#---------------------------------------------------------------------
# executables
#---------------------------------------------------------------------
MD := mkdir -p
RM := rm
CC := g++

#---------------------------------------------------------------------
# rules
#---------------------------------------------------------------------
.PHONY: clean directories objects title

all: directories objects title

directories:
 @$(MD) $(DIRS)

clean:
 $(RM) -rf $(OUT_DIR)

$(OBJS): $(SOURCE_TARGET)
 @$(CC) -c $< -o $@

$(DEPS): $(SOURCE_TARGET)
 @$(CC) -c -MM $< > $(DEPS)

-include $(DEPS)

objects:$(OBJS) $(DEPS)

title: $(OBJS)
 @$(CC) $< -o $@

Я много раз пробовал несколько опций и sooo. Я погуглил для решения, но не мог найти никого.

Использует "-MM" флаг для генерации зависимостей правильная опция?? Если не предложите меня правильный способ генерировать зависимости. Я хотел к сгенерированным зависимостям автоматически, потому что мой проект будет иметь sooo многими файлами. Я думал, что это - более оптимальный вариант, чем записать evey зависимость вручную.

Это ошибки, которые я получаю

g++: stdAfx.d: No such file or directory
g++: Main.d: No such file or directory
make: *** No rule to make target `stdAfx.d', needed by `objects'.  Stop.

Заранее спасибо.

6
задан Jabez 30 December 2009 в 12:20
поделиться