带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)
目录
相关文章
|
8月前
|
JSON 监控 安全
多Agent上生产的第一课:日志、轨迹、回放与责任归因
多Agent系统排查难?作者亲历生产事故后,提出五层可观测性体系:结构化日志(含参数/结果)、任务轨迹(还原数据流)、可解释回放、责任归因(结合推理链)、状态审计。最小方案仅需3天落地,让问题定位从“两小时盲猜”缩至“五分钟定位”。
874 1
|
存储 数据库 索引
Python新手常见问题一:列表、元组、集合、字典区别是什么?
本文针对Python编程新手常遇到的问题,详细阐述了列表(List)、元组(Tuple)、集合(Set)和字典(Dictionary)这四种数据结构的核心区别。列表是一种有序且可变的数据序列,允许元素重复;元组同样有序但不可变,其内容一旦创建就不能修改;集合是无序、不重复的元素集,强调唯一性,主要用于数学意义上的集合操作;而字典则是键值对的映射容器,其中键必须唯一,而值可以任意,它提供了一种通过键查找对应值的有效方式。通过对这些基本概念和特性的对比讲解,旨在帮助初学者更好地理解并运用这些数据类型来解决实际编程问题。
5162 1
|
7月前
|
机器学习/深度学习 算法 数据可视化
大模型应用:上下文理解极限:Context Window 与注意力跨度的数学边界.57
本文深入解析大模型长文本处理的三大核心概念:上下文窗口(输入长度上限)、注意力跨度(有效关注范围)与数学边界(算力/显存制约)。三者共同决定模型真实能力,而非仅看“128K”等宣传数字。理解它们是合理选型、优化提示、评估性能的关键。
1411 10
|
并行计算 算法 Java
Python3解释器深度解析与实战教程:从源码到性能优化的全路径探索
Python解释器不止CPython,还包括PyPy、MicroPython、GraalVM等,各具特色,适用于不同场景。本文深入解析Python解释器的工作原理、内存管理机制、GIL限制及其优化策略,并介绍性能调优工具链及未来发展方向,助力开发者提升Python应用性能。
710 0
|
存储 人工智能 运维
少年云亮相联合国教科文组织,已向偏远地区捐赠200多所AI云教室
少年云亮相联合国教科文组织,已向偏远地区捐赠200多所AI云教室
|
存储 JSON 数据格式
Jmeter系列(45)- 详解 Jmeter 跨线程组取参数值的方法,免代码!
Jmeter系列(45)- 详解 Jmeter 跨线程组取参数值的方法,免代码!
1032 0
Jmeter系列(45)- 详解 Jmeter 跨线程组取参数值的方法,免代码!
基于模糊PID控制器的风力温度控制系统simulink建模与仿真
**课题概述:** 设计一个室温控制系统,保持室内温度在23ºc,当温度超出范围时,电风扇自动调整档位。系统监控温度、压强、风速、通风量和风扇参数。 **系统仿真:** 使用MATLAB2022a进行仿真。 **核心原理:** 结合模糊逻辑和PID控制的系统,模糊逻辑处理不确定信息,调整PID参数以优化温度控制。 **模糊PID:** 输入(温度误差e,误差变化率ec),输出(PID参数调整量)。模糊规则库决定参数调整,模糊推理生成输出,清晰化处理转换为实际参数调整,改善系统性能。 **整体结构:** 包含模糊逻辑控制器和PID调节,动态适应环境变化,确保设备稳定高效运行。
|
运维 监控 Java
使用jps命令查看Java进程
`jps`是Java开发者和系统管理员的得力助手,它简化了Java进程监控的过程,使得快速检查应用运行状态变得轻而易举。通过合理利用其提供的参数,可以高效地进行故障排查、性能监控及日常管理任务,确保Java应用稳定运行。
2111 2
|
Java Linux iOS开发
如何配置 Java 环境变量:设置 JAVA_HOME 和 PATH
本文详细介绍如何在Windows和Linux/macOS系统上配置Java环境变量。
22784 12
|
JavaScript 前端开发
JavaScript回车事件
JavaScript回车事件
459 0