FindIce

版本 3.1 中新增。

查找互联网通信引擎(Ice)程序、库和数据文件。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++11 库使用 Ice::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

将此变量设置为布尔真以启用此模块的调试输出。

注意

在大多数情况下,除非安装了多个 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)