码迷,mamicode.com
首页 > 其他好文 > 详细

自动编译Makefile,原版升级版,支持自动推倒头文件依赖关系、创建目标路径

时间:2015-02-27 20:15:19      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:makefile   gcc   

###################################################################################
#                 简易多模块程序自动编译/清除Makefile v2.0
#简介:    自动编译、清除功能,不需要每次编译输入gcc或者rm指令
#使用方法: 先配置Makefile中的配置项、目标名称等,然后在终端执行make即可
#
#使用说明:1. 本Makefile可以自动推倒源程序与头文件之间的依赖关系,并生成.depend文件
#          2. 当目标目录不存在时,本Makefile将调用$(MKDIR)命令创建出完整的目标目录树
#          3. 在执行make clean命令时,将删除$(SRC)目录下所有匹配模式*~的文件,望悉知
#
#          Author: wangqunfeng, Date: 2013/12/30
#修改历史:
#          2014-1-9:添加2个编译过程中间输出文件:预处理.i,编译.s
#          2015-2-27: v2.0 自动推倒头文件依赖关系,支持创建目标目录
#################################用户配置选项######################################
TARGET = dict
OBJS = cworddb.o cwordserver.o eworderror.o


CXX = g++
GDB = gdb
MKDIR = mkdir
VPATH += ./:./include


CXXFLAGS = -g -std=c++11


SRC = ./src
BIN = ./bin/Debug
####################################################################################


#删除路径后面的斜线,并转换为路径序列
VPATH := $(patsubst %/,%,$(subst :, ,$(VPATH)))
#设置包含文件搜索路径
CXXFLAGS += $(addprefix -I,$(VPATH))


####################################################################################


all:bin depend $(BIN)/$(TARGET)


$(BIN)/$(TARGET) : $(addprefix $(BIN)/,$(OBJS))
	$(CXX) $(addprefix $(BIN)/,$(OBJS)) $(CXXFLAGS) -o $(BIN)/$(TARGET)


$(addprefix $(BIN)/,$(OBJS)): $(BIN)/%.o : $(SRC)/%.cpp
	$(CXX) $(CXXFLAGS) $< -o $@


-include $(BIN)/.depend


depend: 
	$(CXX) $(CXXFLAGS) -MM ${OBJS:%.o=$(SRC)/%.cpp} > $(BIN)/.depend


bin:
	[ ! -d $(BIN) ] & $(MKDIR) -p $(BIN)


clean:
	rm -rf $(SRC)/*~ $(BIN)/$(TARGET) $(addprefix $(BIN)/,$(OBJS)) $(BIN)/.depend


exec:
	$(BIN)/$(TARGET)


gdb:
	$(GDB) $(BIN)/$(TARGET)


原版地址:http://blog.csdn.net/qq759981398/article/details/38709319

自动编译Makefile,原版升级版,支持自动推倒头文件依赖关系、创建目标路径

标签:makefile   gcc   

原文地址:http://blog.csdn.net/qq759981398/article/details/43971581

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!