Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
3.5 KiB
92 lines
3.5 KiB
16 years ago
|
Getting started with Protocol Buffers on Mono
|
||
|
---------------------------------------------
|
||
|
|
||
|
Prerequisites:
|
||
|
|
||
|
o Mono 2.4 or higher. Earlier versions of Mono had too
|
||
|
many issues with the weird and wonderful generic type
|
||
|
relationships in Protocol Buffers. (Even Mono 2.4 *did*
|
||
|
have a few compile-time problems, but I've worked round them.)
|
||
|
|
||
|
o Some sort of Linux/Unix system
|
||
|
You can try running with Bash on Windows via MINGW32 or
|
||
|
something similar, but you're on your own :) It's easier
|
||
|
to build and test everything with .NET if you're on
|
||
|
Windows.
|
||
|
|
||
|
o The native Protocol Buffers build for your system.
|
||
|
Get it from http://code.google.com/p/protobuf/
|
||
|
After building it, copy the executable protoc
|
||
|
file into this directory.
|
||
|
|
||
|
o The NUnit binaries from http://nunit.org
|
||
|
I generally just download the latest version, which
|
||
|
may not be the one which goes with nunit.framework.dll
|
||
|
in ../lib, but I've never found this to be a problem.
|
||
|
|
||
|
Building the code with current sources
|
||
|
--------------------------------------
|
||
|
|
||
|
1) Edit buildall.sh to tell it where to find nunit-console.exe
|
||
|
(and possibly change other options)
|
||
|
|
||
|
2) Run buildall.sh from this directory. It should build the
|
||
|
main library code + tests and ProtoGen code + tests, running
|
||
|
each set of tests after building it.
|
||
|
|
||
|
Note that currently one test is ignored in ServiceTest.cs. This
|
||
|
made the Mono VM blow up - I suspect it's some interaction with
|
||
|
Rhino which doesn't quite work on Mono 2.4. If you want to see a
|
||
|
truly nasty stack trace, just comment out the Ignore attribute in
|
||
|
ServiceTest.cs and rerun.
|
||
|
|
||
|
The binaries will be produced in a bin directory under this one. The
|
||
|
build currently starts from scratch each time, cleaning out the bin
|
||
|
directory first. Once I've decided on a full NAnt or xbuild
|
||
|
strategy, I'll do something a little cleaner.
|
||
|
|
||
|
Rebuilding sources for generated code
|
||
|
-------------------------------------
|
||
|
|
||
|
1) Build the current code first. The bootstrapping issue is why
|
||
|
the generated source code is in the source repository :) See
|
||
|
the steps above.
|
||
|
|
||
|
2) Run generatesource.sh from this directory. This will create a
|
||
|
temporary directory, compile the .proto files into a binary
|
||
|
format, then run ProtoGen to generate .cs files from the binary
|
||
|
format. It will copy these files to the right places in the tree,
|
||
|
and finally delete the temporary directory.
|
||
|
|
||
|
3) Rebuild to test that your newly generated sources work. (Optionally
|
||
|
regenerate as well, and hash the generated files to check that
|
||
|
the new build generates the same code as the old build :)
|
||
|
|
||
|
Running the code
|
||
|
----------------
|
||
|
|
||
|
Once you've built the binaries, you should be able to use them just
|
||
|
as if you'd built them with .NET. (And indeed, you should be able to
|
||
|
use binaries built with .NET as if you'd built them with Mono :)
|
||
|
|
||
|
See the getting started guide for more information:
|
||
|
http://code.google.com/p/protobuf-csharp-port/wiki/GettingStarted
|
||
|
|
||
|
FAQ (Frequently Anticipated Questions)
|
||
|
--------------------------------------
|
||
|
|
||
|
Q) This build process sucks! Why aren't you doing X, Y, Z?
|
||
|
A) My Mono skills are limited. My NAnt skills are limited. My
|
||
|
MSBuild/xbuild skils are limited. My shell script skills are
|
||
|
limited. Any help is *very* welcome!
|
||
|
|
||
|
Q) Why doesn't it build ProtoBench etc?
|
||
|
A) This is a first initial "release" I'll add more bits to
|
||
|
the build script. I'll be interested to see the results
|
||
|
of benchmarking it on Mono :)
|
||
|
|
||
|
Any further questions or suggestions? Please email skeet@pobox.com
|
||
|
or leave a request at
|
||
|
http://code.google.com/p/protobuf-csharp-port/issues/list
|
||
|
|