C++ Client
Since 4.8.
Watchman includes a C++ client library to facilitate easy access to Watchman data from C++ applications. This library provides APIs for:
- Opening and maintaining a connection to a local Watchman server.
- Executing request-response Watchman commands.
- Subscribing to updates with in directory trees.
Installation
Provided the Folly library is present when Watchman is built, the C++ client library is automatically built and installed. For details on building Watchman see Installation.
API
The public Watchman C++ client API is entirely covered in the installed
watchman/WatchmanClient.h
header file. This header contains a usage synopsis
and notes on the public API features.
For a simple example of API usage, sending simple request-response commands to
Watchman, see cppclient/CLI.cpp
in the Watchman source tree. For a more
extensive example of the API including use of subscriptions, see the integration
test integration/cppclient.cpp
also in the Watchman source.
The C++ client library and its API make heavy use of the Folly library and as such familiarity with this is highly recommended. Specifically, the client library makes extensive use of Folly's async features to provide high-performance asynchronous I/O, and Folly's dynamics to avoid needing to construct/process raw JSON in C++.
Using the C++ client in your application's build
To facilitate integration into your application's build, the Watchman C++ client library provides support for pkg-config.
For example, if your application was contained entirely in one C++ file called
app.cpp
the following would be sufficient for build on a system with GNU Make:
$ make LDFLAGS=$(pkg-config watchmanclient --libs) CPPFLAGS=$(pkg-config watchmanclient --cflags) app
If Watchman is installed in a location pkg-config
does not search for packages
by default, you may need to modify the PKG_CONFIG_PATH
environment variable.
For example:
$ export PKG_CONFIG_PATH=<watchman path>/lib/pkgconfig:$PKG_CONFIG_PATH