capnproto.cpp
Provides support for Cap'n Proto for the C++ language. More...
| Since: | Qbs 1.17 | 
Properties
- compilerName : string
- compilerPath : string
- importPaths : pathList
- outputDir : string
- useRpc : bool
Detailed Description
The capnproto.cpp module provides support for generating C++ headers and sources from proto definition files using the capnpc tool.
A simple qbs file that uses Cap'n Proto can be written as follows:
CppApplication { Depends { name: "capnproto.cpp" } files: ["foo.capnp", "main.cpp"] }
A generated header now can be included in the C++ sources:
#include <foo.capnp.h> int main(int argc, char* argv[]) { ::capnp::MallocMessageBuilder message; auto foo = message.initRoot<Foo>(); foo.setAnswer(42); return 0; }
Relevant File Tags
| Tag | Auto-tagged File Names | Since | Description | 
|---|---|---|---|
| "capnproto.input" | *.capnp | 1.17.0 | Source files with this tag are considered inputs to the capnpccompiler. | 
Dependencies
This module depends on the capnp module and on the capnp-rpc module if useRpc property is true. These modules are created by the Module Providers via the pkg-config tool.
Property Documentation
| compilerName : string | 
The name of the capnp binary.
Default: "capnpc"
| compilerPath : string | 
The path to the protoc binary.
Use this property to override the auto-detected location.
Default: auto-detected
| importPaths : pathList | 
The list of import paths that are passed to the capnpc tool via the --import-path option.
Default: []
| outputDir : string | 
The directory where the capnpc compiler generated files are placed.
Default: product.buildDirectory + "/capnp"
| useRpc : bool | 
Use this property to enable support for the RPC framework.
A simple qbs file that uses rpc can be written as follows:
 import qbs.Host
 Project {
     CppApplication {
         Depends { name: "capnproto.cpp"; required: false }
         name: "server"
         condition: capnproto.cpp.present && qbs.targetPlatform === Host.platform()
         consoleApplication: true
         capnproto.cpp.useRpc: true
         files: [
             "calculator.capnp",
             "calculator-server.cpp"
         ]
     }
     CppApplication {
         Depends { name: "capnproto.cpp"; required: false }
         name: "client"
         condition: capnproto.cpp.present && qbs.targetPlatform === Host.platform()
         consoleApplication: true
         capnproto.cpp.useRpc: true
         files: [
             "calculator.capnp",
             "calculator-client.cpp"
         ]
     }
 }
Default: false