这是我的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
是同级目录)?
在我制作完之后,执行shell命令移动文件似乎是可行的,但是还有更好的方法吗?