带protobuf的通用型makefile

简介:
ver=release

CXX=g++
ifeq ($(ver),debug)
CXXFLAGS=-std=c++11 -Wall -Wextra -g -O0 -DDEBUG
else
CXXFLAGS=-std=c++11 -Wall #-Wextra
endif
BIN=project

# 除去隐藏目录
ALLDIR=$(shell find . -type d | grep -E '/\.|proto|test' -v)
SRCS=$(foreach DIR,$(ALLDIR), $(wildcard $(DIR)/*.cpp))
OBJS=$(patsubst %.cpp,%.o, $(SRCS))
PROTODIR=$(shell find . -type d | grep -E '/proto$$')
PROTOFILE=$(wildcard $(PROTODIR)/*.proto)
PROTOSRC=$(patsubst %.proto,%.pb.cc,$(PROTOFILE)) $(patsubst %.proto,%.grpc.pb.cc,$(PROTOFILE))
PROTOHEAD=$(patsubst %.cc,%.h,$(PROTOSRC))
PROTOOBJS=$(patsubst %.cc,%.o, $(PROTOSRC))


ALL: $(PROTOOBJS) $(OBJS)
    $(CXX) $(CXXFLAGS) -o $(BIN) $^  -pthread -lprotobuf -lgrpc++

%.o: %cc %.cpp
    $(CXX) $(CXXFLAGS) -o $@ -c $<

$(PROTOSRC): $(PROTOFILE)
    cd $(PROTODIR);protoc --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` $(notdir $(PROTOFILE))
    cd $(PROTODIR);protoc --cpp_out=. $(notdir $(PROTOFILE))


clean:
    rm -f $(OBJS) $(PROTOOBJS) $(BIN)
目录
相关文章
|
18天前
|
编译器 C语言 C++
CMake基础(9)使用Clang编译
CMake基础(9)使用Clang编译
53 0
|
1月前
写个比较通用的makefile
写个比较通用的makefile
13 2
|
1月前
|
编译器 Linux
boost库交叉编译ARM版本
boost库交叉编译ARM版本
34 2
|
4月前
|
Ubuntu
ubuntu安装protobuf
ubuntu安装protobuf
|
6月前
|
C++ 容器
使用protobuf的简单流程记录、编译protobuf时遇到的坑 以及 链接protobuf的坑
使用protobuf的简单流程记录、编译protobuf时遇到的坑 以及 链接protobuf的坑
|
8月前
|
编译器
通用Makefile的使用及解析1
通用Makefile的使用及解析
48 0
|
8月前
通用Makefile的使用及解析 2
通用Makefile的使用及解析
78 0
|
10月前
|
编译器
ProtoBuf的安装
ProtoBuf的安装
|
编解码
FFMpeg编译支持NVidia CODEC(成功)
FFMpeg编译支持NVidia CODEC(成功)
224 0
|
编译器 Linux Ruby
Linux环境安装Protobuf
1,下载地址: https://github.com/protocolbuffers/protobuf/releases 最好是下载-all的包,因为里面的依赖文件比较全,不然还需要下载各种依赖,可能会遇到各种报错,我这里下载的是3.11.2版本,自己根据情况下面对应的版本. 2,解压编译 1, tar -zxvf protobuf-all-3.11.2.tar.gz 2, ./configure 3, make 4, make install 最后两步比较的慢,耐心等待就行,完成后运行下面的命令可以看到版本的信息 执行 protoc --version 会显示 libpro