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>...)
支持的组件包括
|
|
Ice 3.7 及更高版本还包含 C++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_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将此变量设置为布尔值 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)