一、前言
这是我最近常用的一个makefile,支持mysql,多线程,按需配置即可,简单好用。
二、目录结构简介
这个makefile,对应的目录结构如下,makefile直接放在/YourProject目录下,与/bin目录同级
|-------------/YourProject
|--------------------/bin 存放可执行文件(必须存在)
|--------------------/config 存放配置文件(必须存在)
|--------------------/obj 存放编译过程中的.o文件(必须存在)
|--------------------/log 存放日志(必须存在)
|--------------------/pic 存放图片,可选,不一定要有这个文件夹
|--------------------/source 存放源码,包括.cpp和.h(必须存在)
三、makefile代码
-------------------------------------------------------------------------注意事项:执行命令的那一行,必须以TAB开头,不能用空格!
DIR_SRC = ./source
DIR_OBJ = ./obj
DIR_BIN = ./bin
# 注意其他模块的路径,也在SRC里面
SRC = $(shell find $(DIR_SRC) -name *.cpp)
OBJ = $(patsubst %.cpp, ${DIR_OBJ}/%.o, $(notdir ${SRC}))
# Target Name
TARGET = spfsforecast
BIN_TARGET = ${DIR_BIN}/${TARGET}
# Declaration of variables
CC = gcc
CXX = g++
CXXFLAGS = -g -Wall -O2 -DDEBUG
LDFLAGS =
# Libs
LIBS = -lmysqlclient -lpthread -L/usr/lib/mysql -lstdc++ -ldl
INCPATH = -I/usr/include/mysql
# Main target 由 .o文件 链接而成
$(BIN_TARGET):$(OBJ)
$(CXX) -o $@ $(OBJ) $(LIBS)
# .o文件 由 .cpp 编译而成
$(DIR_OBJ)/%.o:${DIR_SRC}/%.cpp
$(CXX) $(CXXFLAGS) -c $(INCPATH) $< -o $@
# 删除生成的 .o文件 以及 可执行程序
.PHONY:clean
clean:
rm -f ${DIR_OBJ}/*.o $(BIN_TARGET)
DIR_OBJ = ./obj
DIR_BIN = ./bin
# 注意其他模块的路径,也在SRC里面
SRC = $(shell find $(DIR_SRC) -name *.cpp)
OBJ = $(patsubst %.cpp, ${DIR_OBJ}/%.o, $(notdir ${SRC}))
# Target Name
TARGET = spfsforecast
BIN_TARGET = ${DIR_BIN}/${TARGET}
# Declaration of variables
CC = gcc
CXX = g++
CXXFLAGS = -g -Wall -O2 -DDEBUG
LDFLAGS =
# Libs
LIBS = -lmysqlclient -lpthread -L/usr/lib/mysql -lstdc++ -ldl
INCPATH = -I/usr/include/mysql
# Main target 由 .o文件 链接而成
$(BIN_TARGET):$(OBJ)
$(CXX) -o $@ $(OBJ) $(LIBS)
# .o文件 由 .cpp 编译而成
$(DIR_OBJ)/%.o:${DIR_SRC}/%.cpp
$(CXX) $(CXXFLAGS) -c $(INCPATH) $< -o $@
# 删除生成的 .o文件 以及 可执行程序
.PHONY:clean
clean:
rm -f ${DIR_OBJ}/*.o $(BIN_TARGET)
-----