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,你可以在代码中直接包含。

posted @ 2026-03-31 13:20  BlackSnow  阅读(89)  评论(0)    收藏  举报