通用的makefile,制作动态库和静态库

<pre name="code" class="cpp">################################################################
#自动将src目录下所有的cpp、cc和c文件编译,生成所有.o文件保存在bin/objs下
#自动生成静态库和动态库文件到lib目录下
#Created by lfh 2015-04-14			    
#################################################################

PROJECT_TOP_DIR := $(shell pwd)
PROJECT_SRC_DIR := $(PROJECT_TOP_DIR)/src
PROJECT_INC_DIR := $(PROJECT_TOP_DIR)/inc
PROJECT_LIB_DIR := $(PROJECT_TOP_DIR)/lib
PROJECT_OBJ_DIR := $(PROJECT_TOP_DIR)/objs

COMPILER_DIR := 

DATE := $(shell date '+%y-%m-%d-%H')
CXX := $(COMPILER_DIR)g++
STRIP := $(COMPILER_DIR)strip

LIB_NAME := live555
AR := $(COMPILER_DIR)ar
SHARED_LIB := $(LIB_NAME).so
STATIC_LIB := $(LIB_NAME).a
TARGETS := $(SHARED_LIB) $(STATIC_LIB)
  
CXXFLAGS := -g -Wall -Werror -I$(PROJECT_INC_DIR)
LDFLAG := -L$(PROJECT_LIB_DIR)
ARFLAG := rcs
SOFLAG := -shared -fPIC
  
SRCS :=$(wildcard $(PROJECT_SRC_DIR)/*.cpp $(PROJECT_SRC_DIR)/*.cc $(PROJECT_SRC_DIR)/*.c)
DIR := $(notdir $(SRCS))
PROJECT_OBJ_CPP := $(patsubst %.cpp,%.o,$(DIR))
PROJECT_OBJ_CC := $(patsubst %.cc,%.o,$(PROJECT_OBJ_CPP))
PROJECT_OBJ_C := $(patsubst %.c,%.o,$(PROJECT_OBJ_CC))
PROJECT_ALL_OBJS := $(addprefix $(PROJECT_OBJ_DIR)/, $(PROJECT_OBJ_C))
           
all:$(TARGETS)
	@echo "-----------------------------------------------------------------------------"
	@echo "Build Completed for $(PROJECT_LIB_DIR)/$(TARGETS): $(TARGETS) build"
	@echo "-----------------------------------------------------------------------------"
$(STATIC_LIB): $(PROJECT_ALL_OBJS)
	$(AR) $(ARFLAG) $(PROJECT_LIB_DIR)/$@ $^
$(SHARED_LIB): $(PROJECT_ALL_OBJS)
	$(CXX) $(SOFLAG) -o $(PROJECT_LIB_DIR)/$@ $^

$(PROJECT_OBJ_DIR)/%.o: $(PROJECT_SRC_DIR)/%.cc
	$(CXX) -c $(CXXFLAGS) -o $@ $<    
$(PROJECT_OBJ_DIR)/%.o: $(PROJECT_SRC_DIR)/%.cpp
	$(CXX) -c $(CXXFLAGS) -o $@ $<
$(PROJECT_OBJ_DIR)/%.o: $(PROJECT_SRC_DIR)/%.c
	$(CXX) -c $(CXXFLAGS) -o $@ $< 
clean:  
	rm -fr $(PROJECT_OBJ_DIR)/*.o
	rm -fr $(PROJECT_LIB_DIR)/$(TARGETS)



                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值