Google protobuf 环境搭建
好的,我给你整理一个完整的流程,包括在 Ubuntu/Debian 系统上使用 apt 安装 Protobuf 和依赖,以及在 CMake 中的示例配置,适合 C++ 项目直接使用。
使用 apt 安装 Protobuf 及依赖流程(C++)
1. 安装系统依赖
sudo apt update
sudo apt install -y build-essential cmake \
libprotobuf-dev protobuf-compiler \
libprotoc-dev
说明:
libprotobuf-dev:Protobuf C++ 开发库protobuf-compiler:protoc编译器libprotoc-dev:Protobuf 编译器开发头文件
安装完成后,可以验证:
protoc --version
2. 在 C++ 项目中生成源文件
假设你有一个 .proto 文件 example.proto:
syntax = "proto3";
message Person {
string name = 1;
int32 age = 2;
}
3. CMakeLists.txt 示例
假设项目结构如下:
project/
├─ CMakeLists.txt
├─ main.cpp
└─ proto/
└─ example.proto
示例 CMakeLists.txt
cmake_minimum_required(VERSION 3.16)
project(ProtobufExample CXX)
set(CMAKE_CXX_STANDARD 17)
# 查找 Protobuf
find_package(Protobuf REQUIRED)
# 自动扫描 proto 文件夹下的所有 proto 文件
file(GLOB PROTO_FILES "${CMAKE_CURRENT_SOURCE_DIR}/proto/*.proto")
# 自动生成 C++ 源文件和头文件
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS ${PROTO_FILES})
# 添加可执行文件
add_executable(main main.cpp ${PROTO_SRCS} ${PROTO_HDRS})
# 包含 Protobuf 头文件
include_directories(${Protobuf_INCLUDE_DIRS})
# 链接 Protobuf 库
target_link_libraries(main ${Protobuf_LIBRARIES})
说明:
find_package(Protobuf REQUIRED)会自动查找系统安装的 Protobuf 库和头文件。${PROTO_SRCS}是 Protobuf 生成的.cpp文件,${PROTO_HDRS}是 Protobuf 生成的.h文件(均包含生成路径)。target_link_libraries(main ${Protobuf_LIBRARIES})用于链接 Protobuf 静态或动态库。
4. main.cpp 示例
#include <iostream>
#include "example1.pb.h"
#include "example2.pb.h"
int main() {
Person p;
p.set_name("Alice");
p.set_age(30);
std::cout << "Name: " << p.name() << ", Age: " << p.age() << std::endl;
return 0;
}
根据你扫描的 proto 文件,CMake 会生成对应的头文件
.pb.h,你可以在代码中直接包含。

浙公网安备 33010602011771号