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>...)
支持的组件包括
|
|
Ice 3.7 及更高版本还包括 C++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)