带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)
目录
相关文章
|
5月前
写个比较通用的makefile
写个比较通用的makefile
26 2
|
5月前
|
编译器 C语言 C++
CMake基础(9)使用Clang编译
CMake基础(9)使用Clang编译
407 0
|
5月前
|
Ubuntu
ubuntu安装protobuf
ubuntu安装protobuf
161 0
|
编译器
通用Makefile的使用及解析1
通用Makefile的使用及解析
76 0
通用Makefile的使用及解析 2
通用Makefile的使用及解析
155 0
|
编译器
ProtoBuf的安装
ProtoBuf的安装
142 0
|
编解码
FFMpeg编译支持NVidia CODEC(成功)
FFMpeg编译支持NVidia CODEC(成功)
267 0
|
弹性计算 Ubuntu Shell
DeepRec编译生成whl包
DeepRec编译生成whl包
344 0
DeepRec编译生成whl包
|
Java 编译器 Android开发
【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )(二)
【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )(二)
217 0
【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )(二)
|
Java 编译器 Android开发
【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )(一)
【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )(一)
244 0
【Android Protobuf 序列化】Protobuf 使用 ( protoc 编译器简介 | 下载 protoc 编译器 | 使用 protoc 编译器编译 .proto 源文件 )(一)