linux常用makefile模板
2015-10-23 17:47
393 查看
1、编译动态库
2、编译静态库
3、可执行程序
########################################################################### CXX=g++ CC=$(CXX) LIST:= . ./include ./common SOURCE_LIST:= . ./source ./common VPATH:=$(foreach list, $(LIST), $(list)) #$(warning $(VPATH)) override CXXFLAGS+=-D__ENVIRONMENT_LINUX__ override CXXFLAGS+=-fPIC override CXXFLAGS+=-g override CXXFLAGS+=$(patsubst %,-I%,$(subst ,,$(VPATH))) override CFLAGS+=$(CXXFLAGS) override LDFLAGS+=-rdynamic override MAKEFLAS+= -s LIBS:= $(foreach list,$(SOURCE_LIST),./lib$(list).a) ########################################################################### OBJECT:=../bin/libCommonLib.so SOURCES:=$(foreach list,$(SOURCE_LIST),$(wildcard $(list)/*.cpp)) DELETE:=$(patsubst %.cpp,%.o,$(SOURCES)) DELETE+=$(patsubst %.cpp,%.d,$(SOURCES)) ########################################################################### $(OBJECT):$(patsubst %.cpp,%.o,$(SOURCES)) $(CXX) -shared -o $@ $(CXXFLAGS) $^ ########################################################################### %.d:%.cpp $(CXX) -MM $(CXXFLAGS) $< > $@.$$$$; \ sed 's,\($*\)\.o[ :]*,\1.0 $@ : ,g' < $@.$$$$ > $@; \ rm -f $@.$$$$ -include $(SOUCRCES:.cpp=.d) ########################################################################### .PHONY:clean clean: rm $(DELETE) -f rm $(OBJECT) -f
2、编译静态库
############################################################# # Makefile for static library. # 编译静态链接库 ############################################################# #set your own environment option CC = g++ CC_FLAG = -D_NOMNG -D_FILELINE #static library use 'ar' command AR = ar #set your inc and lib INC = LIB = -lpthread -L./ -lsvrtool #make target lib and relevant obj PRG = libsvrtool.a OBJ = Log.o #all target all:$(PRG) $(PRG):$(OBJ) ${AR} rv ${PRG} $? .SUFFIXES: .c .o .cpp .cpp.o: $(CC) $(CC_FLAG) $(INC) -c $*.cpp -o $*.o .PRONY:clean clean: @echo "Removing linked and compiled files......" rm -f $(OBJ) $(PRG)
3、可执行程序
########################################################################### CXX=g++ CC=$(CXX) ########################################################################### LIST:= ./include ../common_lib/include SOURCE_LIST:= . ./source OBJECT:=../bin/make_test SOURCES:=$(foreach list,$(SOURCE_LIST),$(wildcard $(list)/*.cpp)) VPATH:=$(foreach list,$(LIST),$(list)) #$(warning $(VPATH)) DELETE:=$(patsubst %.cpp,%.o,$(SOURCES)) DELETE+=$(patsubst %.cpp,%.d,$(SOURCES)) override CXXFLAGS+=-D__ENVIRONMENT_LINUX__ -g override CXXFLAGS+=$(patsubst %,-I%,$(subst ,,$(VPATH))) override CFLAGS+=$(CXXFLAGS) override LDFLAGS+=-rdynamic override MAKEFLAGS += -s ############################################################################ $(OBJECT):$(patsubst %.cpp,%.o,$(SOURCES)) $(CXX) -o $@ $(CXXFLAGS) $(LDFLAGS) $^ -lrt -lpthread -I,-Bdynamic -lCommonLib ########################################################################### %.d:%.cpp $(CXX) -MM $(CXXFLAGS) $< > $@.$$$$; \ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ rm -f $@.$$$$ -include $(SOURCES:.cpp=.d) ########################################################################### .PHONY:clean clean: rm $(DELETE) -f rm $(OBJECT) -f
相关文章推荐
- linux安装服务器
- linux centos6.5之sudo配合rsyslog服务,进行日志审计
- Linux查找文件find命令用法
- 几个重要的RedHat Linux内核文件介绍
- Linux脚本中的break continue exit return总结
- JDBC连接Linux服务器的编码问题
- Vs2012于Linux应用程序开发(4):公共财产的定义
- 老王学linux-rrdtool
- linux中模块的相关操作
- 在Linux中让echo命令显示带颜色的字
- ubuntu下安装vim失败,不满足依赖关系
- linux下用core和gdb查询出现"段错误"的地方
- Linux SSH远程文件/目录传输命令scp
- linux之getopt函数
- linux字符驱动之中断按键 .
- Install Linux Kernel - AT91SAM9260EK
- Linux平台Makefile文件的编写基础篇
- Linux那些事儿之我是Block层(5)浓缩就是精华?(二) .
- Linux学习18_Linux 管道符的使用
- 关于archlinux下的ralink5370网卡