Include guide
CC = g++
CPP = g++
MAKE = make
CFLAGS = -m64
CURRENT_DIR = .
PARENT_DIR = ..
THIRD_DIR = $(CURRENT_DIR)/Third
SRC_PATH = $(CURRENT_DIR)/src
PROJ_LIB_DIR = $(CURRENT_DIR)/libs/Linux_x64
PROJ_SLIB_DIR = $(CURRENT_DIR)/libs/Linux_x64
PROJ_OBJ_DIR = $(CURRENT_DIR)/.obj
PROJ_DIR = $(CURRENT_DIR)/.bin/Linux_x64
PROJ_EXE_DIR = $(PARENT_DIR)/bin/Linux_x64
TARGET_PROJ = $(TARGET_DIR)/$(TARGET_NAME)
PROJ_BIN_NAME = $(PROJ_BIN_DIR)/$(TARGET_NAME)
LIBS =
CFLAGS = -pthread -std=c++11
SOFLAGS =
LDLIBS = -lm -ldl -lpthread -lrt
CPPFLAGS := $(CFLAGS) $(SOFLAGS)
LDFLAGS := $(LDFLAGS) $(SOFLAGS) -Wl,-Bsymbolic -Wl,--enable-new-dtags -Wl,--hash-style=sysv -Wl,-rpath,./
VPATH += $(SRC_DIR)
Details
include ./Rules.make
TARGET_NAME = MQAPP
TARGET_DIR = ../out
PROJ_BIN_DIR = ../out
INC_DIR = ../include \
../include/amqpcpp \
../include/event \
../include/event/event2
SRC_DIR = .
PROJ_SRCS =
PROJ_SLIBS =
PROJ_LIBS := $(LIBS) amqpcpp event
OBJ_DIR := $(PROJ_OBJ_DIR)
SOFLAGS := $(SOFLAGS)
OPTS =
LDLIBS := $(LDLIBS) $(patsubst %, -l%, $(PROJ_LIBS)) $(patsubst %, -L%, $(PROJ_LIB_DIR))
LD_STATIC_LIB := $(LD_STATIC_LIB) $(patsubst %, -l%, $(PROJ_SLIBS)) $(patsubst %, -L%, $(PROJ_SLIB_DIR))
CFLAGS := $(CFLAGS) $(SOFLAGS) $(patsubst %, -I%, $(INC_DIR))
MAKE_OBJ_DIR := $(shell if [ ! -d $(OBJ_DIR) ]; then mkdir -p $(OBJ_DIR) ; fi )
MAKE_OBJ_SUBDIR := $(shell for sub_dir in $(VPATH) $(patsubst %/, %, $(dir $(PROJ_SRCS))); do if [ ! -d $(OBJ_DIR)/$$sub_dir ]; then mkdir -p $(OBJ_DIR)/$$sub_dir; fi ; done; )
MAKE_TARGET_DIR := $(shell if [ ! -d $(TARGET_DIR) ]; then mkdir -p $(TARGET_DIR) ; fi )
MAKE_BIN_DIR := $(shell if [ ! -d $(PROJ_BIN_DIR) ]; then mkdir -p $(PROJ_BIN_DIR) ; fi )
SOURCES := $(foreach dir, $(VPATH), $(wildcard $(dir)/*)) $(PROJ_SRCS)
C_SRCS := $(filter %.c, $(SOURCES))
CPP_SRCS := $(filter %.cpp, $(SOURCES))
SRCS := $(C_SRCS) $(CPP_SRCS)
OBJS := $(patsubst %, $(OBJ_DIR)/%, $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(SRCS))))
$(OBJ_DIR)/%.o:%.c
$(CC) -c $(CFLAGS) $< -o $@
$(OBJ_DIR)/%.o:%.cpp
$(CPP) -c $(CPPFLAGS) $< -o $@
all: $(OBJS)
$(CC) $(OPTS) $(OBJS) $(LDFLAGS) $(LDLIBS) $(LD_STATIC_LIB) -o $(TARGET_PROJ)
clean:
-rm -f $(TARGET_PROJ) $(OBJS) $(PROJ_BIN_NAME)