Makefile 模板

编译动态库模板

######################################################################
# makefile 模版
#
######################################################################

###################项目路径和程序名称#################################
DIR=$(shell pwd)
BIN_DIR=$(DIR)/bin
LIB_DIR=$(DIR)/lib
SRC_DIR=$(DIR)/src
INCLUDE_DIR=$(DIR)/include
OBJ_DIR=$(DIR)/obj
DEPS_DIR=$(DIR)/deps
#PROGRAM=$(BIN_DIR)/test
PROGRAM=$(LIB_DIR)/test

###################OBJ文件及路径############################################
EXTENSION=c
OBJS=$(patsubst $(SRC_DIR)/%.$(EXTENSION), $(OBJ_DIR)/%.o,$(wildcard $(SRC_DIR)/*.$(EXTENSION)))
DEPS=$(patsubst $(OBJ_DIR)/%.o, $(DEPS_DIR)/%.d, $(OBJS))

###################include头文件路径##################################
INCLUDE=\
  -I$(INCLUDE_DIR)\
  -I/usr/local/include \
  -I/usr/include/libxml2 

###################lib文件及路径######################################
LINK_LIB_DIRS=-Llib 
###################编译选项及编译器###################################
CC=gcc
CFLAGS=-Wall -W -g -fPIC
LDFLAGS=$(LINK_LIB_DIRS) -lxml2 -lsqlite3 -lcurl -lcrypto -Wl,-rpath -Wl,lib   

###################编译目标###########################################
.PHONY: all clean rebuild

all:$(OBJS) 
    @echo $(DEPS_DIR)
    $(CC) -shared  -o $(PROGRAM) $(OBJS) $(LDFLAGS)


$(DEPS_DIR)/%.d: $(SRC_DIR)/%.$(EXTENSION)
    $(CC) -MM $(INCLUDE) $(CFLAGS) $< | sed -e 1's,^,$(OBJ_DIR)/,' > $@

sinclude $(DEPS)

$(OBJ_DIR)/%.o:$(SRC_DIR)/%.$(EXTENSION) 
    $(CC) $< -o $@ -c $(CFLAGS) $(INCLUDE)

rebuild: clean all

clean:
    rm -rf $(OBJS)  $(BIN_DIR)/*

编译可执行程序

######################################################################
# makefile 模版
#
######################################################################

###################项目路径和程序名称#################################
DIR=$(shell pwd)
BIN_DIR=$(DIR)/bin
LIB_DIR=$(DIR)/lib
SRC_DIR=$(DIR)/src
INCLUDE_DIR=$(DIR)/include
OBJ_DIR=$(DIR)/obj
DEPS_DIR=$(DIR)/deps
#PROGRAM=$(BIN_DIR)/test
PROGRAM=$(BIN_DIR)/implog
##############################安装路径#################################
INSTALL_DIR=/home/zhou/src/install/
###################OBJ文件及路径############################################
EXTENSION=cpp
OBJS=$(patsubst $(SRC_DIR)/%.$(EXTENSION), $(OBJ_DIR)/%.o,$(wildcard $(SRC_DIR)/*.$(EXTENSION)))
DEPS=$(patsubst $(OBJ_DIR)/%.o, $(DEPS_DIR)/%.d, $(OBJS))

###################include头文件路径##################################
INCLUDE=\
  -I$(INCLUDE_DIR)

###################lib文件及路径######################################
LINK_LIB_DIRS=-L/usr/lib/mysql
###################编译选项及编译器###################################
CC=g++
CFLAGS=-Wall -W -g
LDFLAGS=$(LINK_LIB_DIRS) -lmysqlclient 

###################编译目标###########################################
.PHONY: all clean rebuild

all:$(OBJS) 
    $(CC) -o $(PROGRAM) $(OBJS) $(LDFLAGS)


$(DEPS_DIR)/%.d: $(SRC_DIR)/%.$(EXTENSION)
    $(CC) -MM $(INCLUDE) $(CFLAGS) $< | sed -e 1's,^,$(OBJ_DIR)/,' > $@

sinclude $(DEPS)

$(OBJ_DIR)/%.o:$(SRC_DIR)/%.$(EXTENSION) 
    $(CC) $< -o $@ -c $(CFLAGS) $(INCLUDE)

install:all
    mv $(BIN_DIR)/implog $(INSTALL_DIR)

rebuild: clean all

clean:
    rm -rf $(OBJS)  $(BIN_DIR)/*

shell 修改 方案

#!/bin/bash
DIR=`pwd`
BIN_DIR=${DIR}/bin
LIB_DIR=${DIR}/lib
SRC_DIR=${DIR}/src
INCLUDE_DIR=${DIR}/include
OBJ_DIR=${DIR}/obj
DEPS_DIR=${DIR}/deps

function mk_dir()
{
    for  i in $@;
    do
       if [ ! -d $i ];then
        mkdir -p $i    
        chown zhou:zhou $i 
       fi
    done    
}

mk_dir  $BIN_DIR $SRC_DIR  $INCLUDE_DIR $OBJ_DIR $LIB_DIR $DEPS_DIR

check=`find $DIR -maxdepth 1 -name "*.cpp"  -o -name "*.c"   -type f`

if [ "x$check" != "x" ];then

    list=`find $DIR -name "*.cpp"  -type f`

    if [ "x$list" != "x" ];then
        sed -i 's/^CC=.*/CC=g++/g' Makefile
        sed -i 's/^EXTENSION.*/EXTENSION=cpp/g' Makefile
        mv $DIR/*.cpp $SRC_DIR

    else

        mv $DIR/*.c $SRC_DIR
    fi
fi


if [ "x`find $DIR -maxdepth 1 -name "*.h"  -type f`" != "x" ];then

    mv $DIR/*.h $INCLUDE_DIR
fi

if [ "x`find $SRC_DIR -maxdepth 1 -name '*.c' -o -name '*.cpp' -type f`" != "x" ] && [ "x`find $DIR -maxdepth 1 -name Makefile`" != "x" ];then
    make
fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值