最近在做boost相关的服务端开发,感觉程序多了之后文件夹里面很乱,就想着把他们分在不同的文件夹里面,这样看起来也很舒服,而且也不会很low,毕竟要上传到github上保存版本。给别人看也方便许多。
多目录的Makefile网上有许多教程大多类似,但是实际上应用的时候还是遇见了许多问题。
首先就是从src目录里面搜寻cpp文件,在include目录下面放头文件。找到相应objs目录下的.o文件,最后编译出来我们的主程序下面上我的代码。
CXX = g++
#src obj dep 文件的查找/生成路径
SRC_DIR = src
OBJ_DIR = objs
DEPS_DIR = deps
#对cpp文件 头文件进行查找
SRC = $(wildcard $(SRC_DIR)/*.cpp)
LIBS = -lpthread -lboost_system
OBJS = $(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(SRC))))
DEPS = $(addprefix $(DEPS_DIR)/,$(patsubst %.cpp,%.d,$(notdir $(SRC))))
#MySql编译时需要的依赖
SQL_DEPENDS = `mysql_config --cflags --libs`
BOOST_LIB_DIR = /home/mjf/lib/lib
BOOST_INCLUDE_DIR = /home/mjf/lib/include
HEADER_DIR = -I ./include -I/usr/include/mysql -I$(BOOST_INCLUDE_DIR)
CXXFLAG = $(HEADER_DIR) -o2 -g -Wall -std&