comparison src/capnproto-git-20161025/doc/install.md @ 133:1ac99bfc383d

Add Cap'n Proto source
author Chris Cannam <cannam@all-day-breakfast.com>
date Tue, 25 Oct 2016 11:17:01 +0100
parents
children
comparison
equal deleted inserted replaced
132:42a73082be24 133:1ac99bfc383d
1 ---
2 layout: page
3 title: Installation
4 ---
5
6 # Installation: Tools and C++ Runtime
7
8 The Cap'n Proto tools, including the compiler (which takes `.capnp` files and generates source code
9 for them), are written in C++. Therefore, you must install the C++ package even if your actual
10 development language is something else.
11
12 This package is licensed under the [MIT License](http://opensource.org/licenses/MIT).
13
14 ## Caveats
15
16 <p style="font-size: 125%; font-weight: bold;">Cap'n Proto is in BETA</p>
17
18 <div style="float: right"><a class="groups_link" style="color: #fff"
19 href="https://groups.google.com/group/capnproto-announce">Sign Up for Updates</a></div>
20
21 As of this writing, Cap'n Proto is in beta. The serialization layer is close to feature-complete
22 and we don't anticipate any further changes to the wire format. That said, if you want to use it,
23 you should keep in mind some caveats:
24
25 * **Security:** Cap'n Proto has not yet had a security review. Although Kenton has a background
26 in security and is not aware of any vulnerabilities in the current code, it's likely that there
27 are a few, and [some have been found](https://github.com/sandstorm-io/capnproto/tree/master/security-advisories)
28 in the past. For now, do not accept Cap'n Proto messages from parties you do not trust.
29 * **API Stability:** The Cap'n Proto programming interface may still change in ways that break
30 existing code. Such changes are likely to be minor and should not affect the wire format.
31 * **Performance:** While Cap'n Proto is inherently fast by design, the implementation has not yet
32 undergone serious profiling and optimization. Currently it only beats Protobufs in realistic-ish
33 end-to-end benchmarks by around 2x-5x. We can do better.
34 * **RPC:** The RPC implementation particularly experimental, though it is used heavily by
35 [Sandstorm.io](https://sandstorm.io).
36
37 If you'd like to hack on Cap'n Proto, you should join the
38 [discussion group](https://groups.google.com/group/capnproto)!
39
40 If you'd just like to receive updates as things progress, add yourself to the
41 [announce list](https://groups.google.com/group/capnproto-announce).
42
43 ## Prerequisites
44
45 ### Supported Compilers
46
47 Cap'n Proto makes extensive use of C++11 language features. As a result, it requires a relatively
48 new version of a well-supported compiler. The minimum versions are:
49
50 * GCC 4.8
51 * Clang 3.3
52 * Visual C++ 2015 (lite mode only)
53
54 If your system's default compiler is older that the above, you will need to install a newer
55 compiler and set the `CXX` environment variable before trying to build Cap'n Proto. For example,
56 after installing GCC 4.8, you could set `CXX=g++-4.8` to use this compiler.
57
58 ### Supported Operating Systems
59
60 In theory, Cap'n Proto should work on any POSIX platform supporting one of the above compilers,
61 as well as on Windows. We test every Cap'n Proto release on the following platforms:
62
63 * Android
64 * Linux
65 * Mac OS X
66 * Windows - Cygwin
67 * Windows - MinGW-w64 (lite mode and compiler binary only)
68 * Windows - Visual C++ (lite mode only)
69
70 **Windows users:** As of Visual Studio 2015, Visual C++ still does not support enough of C++11 to
71 compile Cap'n Proto's reflection or RPC APIs. "Cap'n Proto Lite" omits these features from the
72 library, giving you only the core serialization based on generated code.
73
74 **Mac OS X users:** You must use at least Xcode 5 with the Xcode command-line
75 tools (Xcode menu > Preferences > Downloads). Alternatively, the command-line tools
76 package from [Apple](https://developer.apple.com/downloads/) or compiler builds from
77 [Macports](http://www.macports.org/), [Fink](http://www.finkproject.org/), or
78 [Homebrew](http://brew.sh/) are reported to work.
79
80 ## Installation: Unix
81
82 **From Release Tarball**
83
84 You may download and install the release version of Cap'n Proto like so:
85
86 <pre><code>curl -O <a href="https://capnproto.org/capnproto-c++-0.0.0.tar.gz">https://capnproto.org/capnproto-c++-0.0.0.tar.gz</a>
87 tar zxf capnproto-c++-0.0.0.tar.gz
88 cd capnproto-c++-0.0.0
89 ./configure
90 make -j6 check
91 sudo make install</code></pre>
92
93 This will install `capnp`, the Cap'n Proto command-line tool. It will also install `libcapnp`,
94 `libcapnpc`, and `libkj` in `/usr/local/lib` and headers in `/usr/local/include/capnp` and
95 `/usr/local/include/kj`.
96
97 **From Package Managers**
98
99 Some package managers include Cap'n Proto packages.
100
101 Note: These packages are not maintained by us and are sometimes not up to date with the latest Cap'n Proto release.
102
103 * Debian / Ubuntu: `apt-get install capnproto`
104 * Homebrew (OSX): `brew install capnp`
105
106 **From Git**
107
108 If you download directly from Git, you will need to have the GNU autotools --
109 [autoconf](http://www.gnu.org/software/autoconf/),
110 [automake](http://www.gnu.org/software/automake/), and
111 [libtool](http://www.gnu.org/software/libtool/) -- installed.
112
113 git clone https://github.com/sandstorm-io/capnproto.git
114 cd capnproto/c++
115 autoreconf -i
116 ./configure
117 make -j6 check
118 sudo make install
119
120 ## Installation: Windows
121
122 **From Release Zip**
123
124 1. Download Cap'n Proto Win32 build:
125
126 <pre><a href="https://capnproto.org/capnproto-c++-win32-0.0.0.zip">https://capnproto.org/capnproto-c++-win32-0.0.0.zip</a></pre>
127
128 2. Find `capnp.exe`, `capnpc-c++.exe`, and `capnpc-capnp.exe` under `capnproto-tools-win32-0.0.0` in
129 the zip and copy them somewhere.
130
131 If you don't care about C++ support, you can stop here. The compiler exe can be used with plugins
132 provided by projects implementing Cap'n Proto in other languages.
133
134 If you want to use Cap'n Proto in C++ with Visual Studio, do the following:
135
136 1. Install [CMake](http://www.cmake.org/) version 3.1 or later.
137
138 2. Use CMake to generate Visual Studio project files under `capnproto-c++-0.0.0` in the zip file.
139 You will need to enable the CMake project options `CAPNP_LITE` and `EXTERNAL_CAPNP`.
140 You can use the CMake UI for this or run this shell command:
141
142 cmake -G "Visual Studio 14 2015" -DCAPNP_LITE=1 -DEXTERNAL_CAPNP=1
143
144 If the `capnp.exe` and `capnpc-c++.exe` tools are not on your `PATH`, then `CAPNP_EXECUTABLE`
145 and `CAPNPC_CXX_EXECUTABLE` will need to be set to their respective locations.
146
147 3. Open the "Cap'n Proto" solution in Visual Studio.
148
149 4. Adjust the project build options (e.g., choice of C++ runtime library, enable/disable exceptions
150 and RTTI) to match the options of the project in which you plan to use Cap'n Proto.
151
152 5. Build the solution (`ALL_BUILD`).
153
154 6. Build the `INSTALL` project to copy the compiled libraries and header files into `CMAKE_INSTALL_PREFIX`.
155
156 Alternatively, find the compiled `.lib` files in the build directory under
157 `src/{capnp,kj}/{Debug,Release}` and place them somewhere where your project can link against them.
158 Also add the `src` directory to your search path for `#include`s, or copy all the headers to your
159 project's include directory.
160
161 7. Add `#define CAPNP_LITE 1` to either your project's precompiled/shared header or compiler options.
162
163 **From Git**
164
165 If you download directly from Git, you'll need to compile the Cap'n Proto tools (the `.exe`s) using
166 MinGW-w64. This is easiest to do in Cygwin or on Linux. For example, on Debian or Ubuntu, you can
167 install MinGW like so:
168
169 sudo apt-get install mingw-w64
170
171 You'll first need to install Cap'n Proto on the host system (using the Unix installation
172 instructions, above). Then, do:
173
174 make distclean
175 ./configure --host=i686-w64-mingw32 --with-external-capnp \
176 --disable-shared CXXFLAGS='-static-libgcc -static-libstdc++'
177 make -j6 capnp.exe capnpc-c++.exe capnpc-capnp.exe
178
179 Now that you have the `exe`s, you can proceed with the usual Windows compilation instructions.