FindXMLRPC

查找 C 和 C++ 的原生 XML-RPC 库

find_package(XMLRPC [...] [COMPONENTS <components>...] [...])

XML-RPC 是一种标准的网络协议,它允许系统之间进行远程过程调用 (RPC)。它使用 XML 编码请求和响应,并使用 HTTP 作为传输机制。

组件

XML-RPC C/C++ 库包含各种功能(模块),提供特定的功能。这些功能的可用性取决于已安装的 XML-RPC 库版本和系统配置。某些功能也依赖于其他功能。

要列出系统上可用的功能,可以使用 xmlrpc-c-config 命令行实用程序。

在 CMake 中,这些功能可以在 find_package() 命令中指定为组件。

find_package(XMLRPC [COMPONENTS <components>...])

组件可以是

c++2

C++ 包装器 API,取代了旧的 c++ 功能。

c++

旧的 C++ 包装器 API(已被 c++2 取代)。

client

XML-RPC 客户端函数(也可用作名为 libwww-client 的旧版基于 libwww 的功能)。

cgi-server

基于 CGI 的服务器函数。

abyss-server

基于 Abyss 的服务器函数。

pstream-server

基于 pstream 的服务器函数。

server-util

基本的服务器函数(它们会自动包含在 *-server 功能中)。

abyss

Abyss HTTP 服务器(不需要 abyss-server)。

openssl

OpenSSL 便利函数。

如果未指定任何组件,则此模块会在不带附加功能的情况下查找 XML-RPC 库及其包含目录。

结果变量

此模块定义了以下变量

XMLRPC_FOUND

布尔值,指示是否找到了 XML-RPC 库及其所有请求的组件。

XMLRPC_INCLUDE_DIRS

包含 xmlrpc.h 和其他使用 XML-RPC 库所需的头文件的包含目录。

XMLRPC_LIBRARIES

链接到 XML-RPC 库及其请求的功能所需的库列表。

示例

查找 XML-RPC 库及其 client 功能,并有条件地创建一个接口 导入目标,该目标封装了其链接到项目目标的用法要求。

find_package(XMLRPC REQUIRED COMPONENTS client)

if(XMLRPC_FOUND AND NOT TARGET XMLRPC::XMLRPC)
  add_library(XMLRPC::XMLRPC INTERFACE IMPORTED)
  set_target_properties(
    XMLRPC::XMLRPC
    PROPERTIES
      INTERFACE_INCLUDE_DIRECTORIES "${XMLRPC_INCLUDE_DIRS}"
      INTERFACE_LINK_LIBRARIES "${XMLRPC_LIBRARIES}"
  )
endif()

target_link_libraries(example PRIVATE XMLRPC::XMLRPC)