Вот мой Makefile:
CXXFLAGS = -std=c++11 -pedantic -Wall
LDFLAGS = -L./lib
SRC_DIR = ./src
OBJ_DIR = ./obj
APP_DIR = .
TARGET = Sight
INCLUDE = -Iinclude/
SOURCES = $(wildcard $(SRC_DIR)/*.cc)
OBJECTS = $(patsubst $(SRC_DIR)/%.cc,$(OBJ_DIR)/%.o,$(SOURCES))
DEPS = $(SRC:src/%.cc=$(OBJ_DIR)/%.d)
all: $(APP_DIR)/$(TARGET)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cc
@mkdir -p $(@D)
$(CXX) $(CXXFLAGS) $(INCLUDE) -MMD -MP -o $@ -c $<
$(APP_DIR)/$(TARGET): $(OBJECTS)
@mkdir -p $(@D)
$(CXX) $(CXXFLAGS) $(INCLUDE) $(LDFLAGS) $^ -o $@
.PHONY: debug clean
debug: CXXFLAGS += -DDEBUG -g
debug: all
clean:
-@rm -rf $(OBJ_DIR)/*
-@rm -rf $(APP_DIR)/$(TARGET)
-include $(DEPS)
Когда я создаю файлы зависимостей * .d, они помещаются в тот же каталог, что и объекты. Есть ли способ поместить их в другой каталог, например, ./dep
или что-то в этом роде (где ./dep
и ./obj
- это дочерние каталоги)?
Кажется выполнимым, выполняя команду оболочки, чтобы переместить файлы после того, как я это сделал, но есть ли лучший способ сделать это?