【protobuf】protobuf 开发 (二)

发布于:2024-05-08 ⋅ 阅读:(33) ⋅ 点赞:(0)

紧接着上一篇文章https://blog.csdn.net/qq_37387199/article/details/137890740

获取丢失的代码

拿到丢失的源代码需要去 Google 的 protobuf GitHub 仓库,地址在 https://github.com/protocolbuffers/protobuf

可以下载压缩包,也可以使用 Git 克隆。前者会丢失一部分第三方库,而这些是编译 protoc 文件所不可或缺的(当然如果你不编译就不需要这些)

我这里使用 Git 克隆,在本地目录下执行:

git clone https://github.com/protocolbuffers/protobuf.git

进入 protobuf 目录,我们需要下载未自动下载的第三方库:

git submodule update --init --recursive

编译 protoc 文件(可以跳过,也许)

上一篇文章,我们使用了 release 中现成的 protoc 生成 pb 的头文件和源文件,其实我们也可以直接通过源代码编译生成这个。

可以参考这篇文章https://blog.csdn.net/wzw1609119742/article/details/119712422,写得很不错。我是用 Clion 自动编译的。

构建指令:

"C:\Program Files\JetBrains\CLion 2024.1\bin\cmake\win\x64\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug "-DCMAKE_MAKE_PROGRAM=C:/Program Files/JetBrains/CLion 2024.1/bin/ninja/win/x64/ninja.exe" -G Ninja -S D:\Codes\3rd\protobuf -B D:\Codes\3rd\protobuf\cmake-build-debug

编译指令:

"C:\Program Files\JetBrains\CLion 2024.1\bin\cmake\win\x64\bin\cmake.exe" --build D:\Codes\3rd\protobuf\cmake-build-debug --target all -j 10

测试pb文件

我编写的 test.cpp 如下:

int main()
{
  Person p;
  std::string name = "ti";
  p.set_allocated_name(&name);
  p.set_age(1);
  p.set_sex(1);

  std::string output;
  p.SerializeToString(&output);

  std::cout << output << std::endl;
}

文件需要放在 protobuf 工程 src 目录下,和生成的 pb 头文件和源文件放在一起,才能保证正常 include 。