之前说到​​怎么写一个简单的Makefile​​,现在介绍一下怎么把编译好的目标文件和执行文件分离出来,也就是分别放到两个文件夹当中。

  • 举例:
    当前test目录里面有一个文件夹src(sources),里面放有5个源文件(和之前的一样)。现在要做的就是编译完成之后,把目标文件和源文件以及可执行文件分离开来
OBJ_DIR = ./obj
SRC_DIR = ./src
BIN_DIR = ./bin
CXX = g++
OBJS = $(OBJ_DIR)/main.o $(OBJ_DIR)/max.o $(OBJ_DIR)/min.o
CFLAGS = -I$(SRC_DIR) -O2
TARGET = $(BIN_DIR)/Main
RM = rm -rf
$(TARGET):DIR $(OBJS)
$(CXX) -o $(TARGET) $(OBJS) $(CFLAGS)
$(OBJ_DIR)/%.o:$(SRC_DIR)/%.cpp
$(CXX) -c $< -o $@
DIR:
@test -d $(OBJ_DIR) || mkdir -p $(OBJ_DIR)
@test -d $(BIN_DIR) || mkdir -p $(BIN_DIR)
clean:
-$(RM) $(TARGET) $(OBJS) $(OBJ_DIR) $(BIN_DIR)

​源文件链接​