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_EXECUTABLE3.14 版新增。
slice2confluence可执行文件的路径。Ice_SLICE2CPP_EXECUTABLEslice2cpp可执行文件的路径。Ice_SLICE2CS_EXECUTABLEslice2cs可执行文件的路径。Ice_SLICE2FREEZEJ_EXECUTABLEslice2freezej可执行文件的路径。Ice_SLICE2FREEZE_EXECUTABLEslice2freeze可执行文件的路径。Ice_SLICE2HTML_EXECUTABLEslice2html可执行文件的路径。Ice_SLICE2JAVA_EXECUTABLEslice2java可执行文件的路径。Ice_SLICE2JS_EXECUTABLE3.4 版本新增。
slice2js可执行文件的路径。Ice_SLICE2MATLAB_EXECUTABLE3.14 版新增。
slice2matlab可执行文件的路径。Ice_SLICE2OBJC_EXECUTABLE3.10 版本新增。
slice2objc可执行文件的路径。Ice_SLICE2PHP_EXECUTABLEslice2php可执行文件的路径。Ice_SLICE2PY_EXECUTABLEslice2py可执行文件的路径。Ice_SLICE2RB_EXECUTABLEslice2rb可执行文件的路径。
Ice 程序存储在
Ice_GLACIER2ROUTER_EXECUTABLE3.4 版本新增。
glacier2router可执行文件的路径。Ice_ICEBOX_EXECUTABLE3.4 版本新增。
icebox可执行文件的路径。Ice_ICEBOX++11_EXECUTABLE3.10 版本新增。
icebox++11可执行文件的路径。Ice_ICEBOXADMIN_EXECUTABLE3.4 版本新增。
iceboxadmin可执行文件的路径。Ice_ICEBOXD_EXECUTABLE3.4 版本新增。
iceboxd可执行文件的路径。Ice_ICEBOXNET_EXECUTABLE3.4 版本新增。
iceboxnet可执行文件的路径。Ice_ICEBRIDGE_EXECUTABLE3.10 版本新增。
icebridge可执行文件的路径。Ice_ICEGRIDADMIN_EXECUTABLE3.4 版本新增。
icegridadmin可执行文件的路径。Ice_ICEGRIDDB_EXECUTABLE3.10 版本新增。
icegriddb可执行文件的路径。Ice_ICEGRIDNODE_EXECUTABLE3.4 版本新增。
icegridnode可执行文件的路径。Ice_ICEGRIDNODED_EXECUTABLE3.4 版本新增。
icegridnoded可执行文件的路径。Ice_ICEGRIDREGISTRY_EXECUTABLE3.4 版本新增。
icegridregistry可执行文件的路径。Ice_ICEGRIDREGISTRYD_EXECUTABLE3.4 版本新增。
icegridregistryd可执行文件的路径。Ice_ICEPATCH2CALC_EXECUTABLEicepatch2calc可执行文件的路径。Ice_ICEPATCH2CLIENT_EXECUTABLE3.4 版本新增。
icepatch2client可执行文件的路径。Ice_ICEPATCH2SERVER_EXECUTABLE3.4 版本新增。
icepatch2server可执行文件的路径。Ice_ICESERVICEINSTALL_EXECUTABLE3.4 版本新增。
iceserviceinstall可执行文件的路径。Ice_ICESTORMADMIN_EXECUTABLE3.4 版本新增。
icestormadmin可执行文件的路径。Ice_ICESTORMDB_EXECUTABLE3.10 版本新增。
icestormdb可执行文件的路径。Ice_ICESTORMMIGRATE_EXECUTABLE3.4 版本新增。
icestormmigrate可执行文件的路径。
Ice 数据库程序存储在以下变量中(在 Windows 上,它们包含在 Ice 安装中;在其他平台上,它们通常通过标准 Berkeley DB 包提供)
Ice_DB_ARCHIVE_EXECUTABLE3.4 版本新增。
db_archive可执行文件的路径。Ice_DB_CHECKPOINT_EXECUTABLE3.4 版本新增。
db_checkpoint可执行文件的路径。Ice_DB_DEADLOCK_EXECUTABLE3.4 版本新增。
db_deadlock可执行文件的路径。Ice_DB_DUMP_EXECUTABLE3.4 版本新增。
db_dump可执行文件的路径。Ice_DB_HOTBACKUP_EXECUTABLE3.4 版本新增。
db_hotbackup可执行文件的路径。Ice_DB_LOAD_EXECUTABLE3.4 版本新增。
db_load可执行文件的路径。Ice_DB_LOG_VERIFY_EXECUTABLE3.4 版本新增。
db_log_verify可执行文件的路径。Ice_DB_PRINTLOG_EXECUTABLE3.4 版本新增。
db_printlog可执行文件的路径。Ice_DB_RECOVER_EXECUTABLE3.4 版本新增。
db_recover可执行文件的路径。Ice_DB_STAT_EXECUTABLE3.4 版本新增。
db_stat可执行文件的路径。Ice_DB_TUNER_EXECUTABLE3.4 版本新增。
db_tuner可执行文件的路径。Ice_DB_UPGRADE_EXECUTABLE3.4 版本新增。
db_upgrade可执行文件的路径。Ice_DB_VERIFY_EXECUTABLE3.4 版本新增。
db_verify可执行文件的路径。Ice_DUMPDB_EXECUTABLE3.4 版本新增。
dumpdb可执行文件的路径。Ice_TRANSFORMDB_EXECUTABLE3.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_HOMECMake 变量优先。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)