Я плохо знаком с 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.
Заранее спасибо.