FindIce

版本 3.1 中新增。

查找 Internet Communication Engine (Ice) 程序、库和数据文件。

find_package(Ice [<version>] COMPONENTS <components>... [...])

Ice 是由 ZeroC 开发的开源远程过程调用 (RPC) 框架,为不同语言提供了开发网络应用程序的 SDK。

在 3.4 版本中添加: 组件的导入目标以及许多新的 *_EXECUTABLE 变量。

3.7 版本新增: 调试和发布库变体分别查找。

在 3.10 版本中添加: 支持 Ice 3.7,包括新组件、程序和 Nuget 包。

组件

Ice 由多个库和程序(可执行文件)组成。此查找模块支持组件,可以使用 find_package() 命令指定,以选择特定的 Ice 库在 CMake 项目中使用。Ice 安装提供的可执行文件始终会自动搜索,无论是否指定了组件。

可用组件列表取决于所使用的 Ice 版本。要成功找到 Ice,必须指定至少一个组件。

find_package(Ice COMPONENTS <components>...)

支持的组件包括

  • Freeze

  • Glacier2

  • Ice

  • IceBox

  • IceDB

  • IceDiscovery

  • IceGrid

  • IceLocatorDiscovery

  • IcePatch

  • IceSSL

  • IceStorm

  • IceUtil

  • IceXML

  • Slice

Ice 3.7 及更高版本还包含 C++11 特定组件。

  • Glacier2++11

  • Ice++11

  • IceBox++11

  • IceDiscovery++11

  • IceGrid++11

  • IceLocatorDiscovery++11

  • IceSSL++11

  • IceStorm++11

导入的目标

此模块提供以下 导入目标

Ice::<component>

3.4 版本新增。

封装指定 Ice 组件(库)使用需求的 Target,如果找到该组件则可用。<component> 应与上面列出的情况保持一致。例如,使用 Ice::Glacier2 来表示 Ice Glacier2 库,或使用 Ice::Ice++11 来表示 Ice++11 库,依此类推。

结果变量

此模块定义了以下变量

Ice_FOUND

布尔值,指示是否找到了(所请求版本的)主程序、库以及使用 Ice 所需的所有组件。

Ice_VERSION

找到的 Ice 发行版版本。

Ice_INCLUDE_DIRS

包含使用 Ice 所需头文件的包含目录。

Ice_LIBRARIES

使用 Ice 所需链接的组件库。

Ice_SLICE_DIRS

包含 Slice(用于 Ice 的规范语言)接口定义(*.ice 文件)的数据目录。

Ice 组件库存储在

Ice_<COMPONENT>_FOUND

布尔值,指示是否找到指定的 Ice 组件。<COMPONENT> 应大写。

Ice_<COMPONENT>_LIBRARIES

由指定 Ice 组件提供的库。<COMPONENT> 应大写。

Slice 程序存储在

Ice_SLICE2CONFLUENCE_EXECUTABLE

3.14 版新增。

slice2confluence 可执行文件的路径。

Ice_SLICE2CPP_EXECUTABLE

slice2cpp 可执行文件的路径。

Ice_SLICE2CS_EXECUTABLE

slice2cs 可执行文件的路径。

Ice_SLICE2FREEZEJ_EXECUTABLE

slice2freezej 可执行文件的路径。

Ice_SLICE2FREEZE_EXECUTABLE

slice2freeze 可执行文件的路径。

Ice_SLICE2HTML_EXECUTABLE

slice2html 可执行文件的路径。

Ice_SLICE2JAVA_EXECUTABLE

slice2java 可执行文件的路径。

Ice_SLICE2JS_EXECUTABLE

3.4 版本新增。

slice2js 可执行文件的路径。

Ice_SLICE2MATLAB_EXECUTABLE

3.14 版新增。

slice2matlab 可执行文件的路径。

Ice_SLICE2OBJC_EXECUTABLE

3.10 版本新增。

slice2objc 可执行文件的路径。

Ice_SLICE2PHP_EXECUTABLE

slice2php 可执行文件的路径。

Ice_SLICE2PY_EXECUTABLE

slice2py 可执行文件的路径。

Ice_SLICE2RB_EXECUTABLE

slice2rb 可执行文件的路径。

Ice 程序存储在

Ice_GLACIER2ROUTER_EXECUTABLE

3.4 版本新增。

glacier2router 可执行文件的路径。

Ice_ICEBOX_EXECUTABLE

3.4 版本新增。

icebox 可执行文件的路径。

Ice_ICEBOX++11_EXECUTABLE

3.10 版本新增。

icebox++11 可执行文件的路径。

Ice_ICEBOXADMIN_EXECUTABLE

3.4 版本新增。

iceboxadmin 可执行文件的路径。

Ice_ICEBOXD_EXECUTABLE

3.4 版本新增。

iceboxd 可执行文件的路径。

Ice_ICEBOXNET_EXECUTABLE

3.4 版本新增。

iceboxnet 可执行文件的路径。

Ice_ICEBRIDGE_EXECUTABLE

3.10 版本新增。

icebridge 可执行文件的路径。

Ice_ICEGRIDADMIN_EXECUTABLE

3.4 版本新增。

icegridadmin 可执行文件的路径。

Ice_ICEGRIDDB_EXECUTABLE

3.10 版本新增。

icegriddb 可执行文件的路径。

Ice_ICEGRIDNODE_EXECUTABLE

3.4 版本新增。

icegridnode 可执行文件的路径。

Ice_ICEGRIDNODED_EXECUTABLE

3.4 版本新增。

icegridnoded 可执行文件的路径。

Ice_ICEGRIDREGISTRY_EXECUTABLE

3.4 版本新增。

icegridregistry 可执行文件的路径。

Ice_ICEGRIDREGISTRYD_EXECUTABLE

3.4 版本新增。

icegridregistryd 可执行文件的路径。

Ice_ICEPATCH2CALC_EXECUTABLE

icepatch2calc 可执行文件的路径。

Ice_ICEPATCH2CLIENT_EXECUTABLE

3.4 版本新增。

icepatch2client 可执行文件的路径。

Ice_ICEPATCH2SERVER_EXECUTABLE

3.4 版本新增。

icepatch2server 可执行文件的路径。

Ice_ICESERVICEINSTALL_EXECUTABLE

3.4 版本新增。

iceserviceinstall 可执行文件的路径。

Ice_ICESTORMADMIN_EXECUTABLE

3.4 版本新增。

icestormadmin 可执行文件的路径。

Ice_ICESTORMDB_EXECUTABLE

3.10 版本新增。

icestormdb 可执行文件的路径。

Ice_ICESTORMMIGRATE_EXECUTABLE

3.4 版本新增。

icestormmigrate 可执行文件的路径。

Ice 数据库程序存储在以下变量中(在 Windows 上,它们随 Ice 安装一起提供;在其他平台上,它们通常可通过标准的 Berkeley DB 包获得)。

Ice_DB_ARCHIVE_EXECUTABLE

3.4 版本新增。

db_archive 可执行文件的路径。

Ice_DB_CHECKPOINT_EXECUTABLE

3.4 版本新增。

db_checkpoint 可执行文件的路径。

Ice_DB_DEADLOCK_EXECUTABLE

3.4 版本新增。

db_deadlock 可执行文件的路径。

Ice_DB_DUMP_EXECUTABLE

3.4 版本新增。

db_dump 可执行文件的路径。

Ice_DB_HOTBACKUP_EXECUTABLE

3.4 版本新增。

db_hotbackup 可执行文件的路径。

Ice_DB_LOAD_EXECUTABLE

3.4 版本新增。

db_load 可执行文件的路径。

Ice_DB_LOG_VERIFY_EXECUTABLE

3.4 版本新增。

db_log_verify 可执行文件的路径。

Ice_DB_PRINTLOG_EXECUTABLE

3.4 版本新增。

db_printlog 可执行文件的路径。

Ice_DB_RECOVER_EXECUTABLE

3.4 版本新增。

db_recover 可执行文件的路径。

Ice_DB_STAT_EXECUTABLE

3.4 版本新增。

db_stat 可执行文件的路径。

Ice_DB_TUNER_EXECUTABLE

3.4 版本新增。

db_tuner 可执行文件的路径。

Ice_DB_UPGRADE_EXECUTABLE

3.4 版本新增。

db_upgrade 可执行文件的路径。

Ice_DB_VERIFY_EXECUTABLE

3.4 版本新增。

db_verify 可执行文件的路径。

Ice_DUMPDB_EXECUTABLE

3.4 版本新增。

dumpdb 可执行文件的路径。

Ice_TRANSFORMDB_EXECUTABLE

3.4 版本新增。

transformdb 可执行文件的路径。

缓存变量

以下缓存变量也可以设置

Ice_<PROGRAM>_EXECUTABLE

指定的 <PROGRAM> 可执行文件的路径;<PROGRAM> 是上面可执行文件结果变量中列出的 Ice 程序的名称(大写)。

Ice_INCLUDE_DIR

包含 Ice 头文件的目录。

Ice_SLICE_DIR

包含 Slice 接口定义的数据目录。

Ice_<COMPONENT>_LIBRARY

指定组件库的路径。<COMPONENT> 应大写。

提示

此模块接受以下变量

Ice_HOME

设置此 CMake 变量为 Ice 安装的根目录,以便在自定义位置搜索 Ice。

注意

在 Windows 上,Ice 3.7.0 及更高版本通过 NuGet 包管理器提供库。将使用 CMAKE_PREFIX_PATH 搜索适当的 NuGet 包,或者可以选择将 Ice_HOME 设置为特定 NuGet 包的位置以限制搜索。

ICE_HOME

环境变量(大写)也可以设置为 Ice 安装的根目录;Ice_HOME CMake 变量具有优先权。

Ice_DEBUG

将此变量设置为布尔值 true 可启用此模块的调试输出。

注意

在大多数情况下,不需要设置以上任何变量,除非安装了多个 Ice 版本并且需要特定的一个。在 Windows 上,通常通过注册表查找最新版本。在类 Unix 系统上,程序、头文件和库通常位于标准位置,但 Ice_SLICE_DIRS 可能不会自动检测到(会搜索常见已知位置)。所有其他变量的默认值基于 Ice_HOME 的值(如果已设置)。

也可以在设置 Ice_HOME 的同时,选择性地覆盖单个组件的特定位置;例如,在较新版本的 Visual Studio 中,如果启发式方法不足以识别特定 Visual Studio 版本的正确程序和库,则可能需要这样做。

示例

查找 Ice 核心库并将其链接到项目目标。

find_package(Ice COMPONENTS Ice)
target_link_libraries(project_target PRIVATE Ice::Ice)

查找 Ice 核心库和 IceSSL 库,并将它们链接到项目目标。

find_package(Ice COMPONENTS Ice IceSSL)
target_link_libraries(project_target PRIVATE Ice::Ice Ice::IceSSL)

查找 Ice 核心库作为必需组件,以及 Ice Freeze 库作为可选组件。

find_package(Ice COMPONENTS Ice OPTIONAL_COMPONENTS Freeze)