代码样例

这个目录包含了使用协议缓冲区来管理地址簿的示例代码。每种支持的语言都提供了两个程序。add_person 示例将一个新的人添加到地址簿中,提示用户输入该人的信息。list_people 的例子是列出已经在地址簿中的人。这些例子在三种语言中使用完全相同的格式,因此你可以,例如,使用 add_person_java 来创建一个地址簿,然后使用 list_people_python 来读取它。

这些例子是协议缓冲区教程的一部分,位于:https://developers.google.com/protocol-buffers/docs/tutorials

使用 bazel 构建例子

这个例子需要 bazel 0.5.4 或更新的版本来构建。你可以从 bazel 的发布页面下载/安装最新版本的 bazel:

https://github.com/bazelbuild/bazel/releases

一旦你安装了 bazel,只需在这个 examples 目录下运行以下命令即可构建代码:

$ bazel build :all

然后你就可以运行建立的二进制文件了:

$ bazel-bin/add_person_cpp addressbook.data

要在你自己的 bazel 项目中使用 protobuf,请遵循 BUILD 文件和 WORKSPACE 文件中的说明。

使用 make 构建示例

你必须先安装 protobuf 包,然后才能用 make 构建它。最低要求是安装协议编译器(即 protoc 二进制)和你要构建的语言的 protobuf 运行时。

你可以简单地运行 “make” 来构建所有语言的例子(Go 除外)。然而,由于不同的语言有不同的安装要求,它很可能会失败。最好是按照下面的个别说明,只构建你感兴趣的语言。

C++

你可以按照 …/src/README.md 中的说明,从源代码中安装 protoc 和 protobuf C++ 运行时。

然后在这个例子目录下运行 “make cpp” 来构建 C++ 例子。它将创建两个可执行文件:add_person_cpp 和 list_people_cpp。这些程序只是接受一个地址簿文件作为参数。add_person_cpp 程序将创建该文件,如果它还不存在的话。

要运行这些例子:

$ ./add_person_cpp addressbook.data
$ ./list_people_cpp addressbook.data

注意,在某些平台上,你可能必须编辑 Makefile,并从链接器命令中删除 “-lpthread” (也许用其他东西代替)。我们没有自动这样做,因为我们想让这个例子保持简单。

Python

按照 …/README.md 中的说明安装 protoc,然后按照 …/python/README.md 从源代码安装 protobuf python runtime。你也可以用 pip 安装 python 运行时:

$ pip install protobuf

确保运行时的版本与 protoc 二进制相同,否则可能无法工作。

在你安装了 protoc 和 python 运行时之后,运行 “make python” 来建立两个可执行文件(实际上是 shell 脚本):add_person_python 和 list_people_python。它们的工作方式与 C++ 的可执行文件相同。

Java

按照 …/README.md 中的说明安装 protoc,然后从 maven 下载 protobuf Java 运行时 .jar 文件:

https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java

然后运行以下内容:

$ export CLASSPATH=/path/to/protobuf-java-[version].jar
$ make java

这将创建 add_person_java/list_people_java 可执行文件(shell 脚本),可用于创建/显示地址簿数据文件。

Go

Follow instructions in …/README.md to install protoc. Then install the Go protoc plugin (protoc-gen-go):

$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

The “go install” command will install protoc-gen-go into the GOBIN directory. You can set the \(GOBIN environment variable before running "go install" to change the install location. Make sure the install directory is in your shell \)PATH.

Build the Go samples with “make go”. This creates the following executable files in the current directory:

add_person_go      list_people_go

To run the example:

./add_person_go addressbook.data

to add a person to the protocol buffer encoded file addressbook.data. The file is created if it does not exist. To view the data, run:

./list_people_go addressbook.data

Observe that the C++, Python, Java, and Dart examples in this directory run in a similar way and can view/modify files created by the Go example and vice versa.

Dart

First, follow the instructions in …/README.md to install the Protocol Buffer Compiler (protoc).

Then, install the Dart Protocol Buffer plugin as described here. Note, the executable bin/protoc-gen-dart must be in your PATH for protoc to find it.

Build the Dart samples in this directory with make dart.

要运行这些例子:

$ dart add_person.dart addressbook.data
$ dart list_people.dart addressbook.data

The two programs take a protocol buffer encoded file as their parameter. The first can be used to add a person to the file. The file is created if it does not exist. The second displays the data in the file.