跳到主要内容

C++ 客户端

自 4.8 版本起。

Watchman 包含一个 C++ 客户端库,以便于从 C++ 应用程序轻松访问 Watchman 数据。该库提供以下 API:

  • 打开并维护与本地 Watchman 服务器的连接。
  • 执行请求-响应 Watchman 命令。
  • 订阅目录树中的更新。

安装

如果在构建 Watchman 时存在 Folly 库,则会自动构建和安装 C++ 客户端库。有关构建 Watchman 的详细信息,请参阅安装

API

公共 Watchman C++ 客户端 API 完全包含在已安装的watchman/WatchmanClient.h头文件中。 此标头包含用法概要和有关公共 API 功能的说明。

有关 API 用法的简单示例(向 Watchman 发送简单的请求-响应命令),请参见 Watchman 源代码树中的cppclient/CLI.cpp。 有关 API 的更广泛示例,包括订阅的使用,请参见 Watchman 中的集成测试integration/cppclient.cpp

C++ 客户端库及其 API 大量使用了 Folly 库,因此强烈建议熟悉该库。 具体来说,客户端库广泛使用Folly 的异步功能来提供高性能异步 I/O,并使用Folly 的 dynamics来避免在 C++ 中构建/处理原始 JSON。

在应用程序的构建中使用 C++ 客户端

为了便于集成到应用程序的构建中,Watchman C++ 客户端库提供了对pkg-config的支持。

例如,如果您的应用程序完全包含在一个名为app.cpp的 C++ 文件中,则以下内容足以在具有 GNU Make 的系统上进行构建

$ make LDFLAGS=$(pkg-config watchmanclient --libs) CPPFLAGS=$(pkg-config watchmanclient --cflags) app

如果 Watchman 安装在pkg-config默认不搜索软件包的位置,则可能需要修改PKG_CONFIG_PATH环境变量。 例如

$ export PKG_CONFIG_PATH=<watchman path>/lib/pkgconfig:$PKG_CONFIG_PATH