FindIce¶
Added in version 3.1.
Finds the Internet Communication Engine (Ice) programs, libraries and datafiles. Ice is an open-source remote procedure call (RPC) framework developed by ZeroC and provides SDKs for various languages to develop network applications.
Added in version 3.4: Imported targets for components and many new *_EXECUTABLE
variables.
Added in version 3.7: Debug and Release library variants are found separately.
Added in version 3.10: Ice 3.7 support, including new components, programs and the Nuget package.
Components¶
Ice consists of several libraries and programs (executables). This find module
supports components, which can be specified using the find_package()
command, to select specific Ice libraries for use in a CMake project.
Executables provided by Ice installation are always searched automatically,
regardless of the specified components.
The list of available components depends on the Ice version in use. To successfully find Ice, at least one component must be specified:
find_package(Ice COMPONENTS <components>...)
Supported components include:
|
|
Ice 3.7 and later also include C++11-specific components:
|
|
Imported Targets¶
This module provides the following Imported Targets:
Ice::<component>
Added in version 3.4.
Target encapsulating the usage requirements for the specified Ice component (library), available if that component is found. The
<component>
should be written in the same case, as listed above. For example, useIce::Glacier2
for the Ice Glacier2 library, orIce::Ice++11
for the Ice++11 library, etc.
Result Variables¶
This module defines the following variables:
Ice_FOUND
Boolean indicating whether the main programs, libraries and all requested components for using Ice were found.
Ice_VERSION
The version of Ice release found.
Ice_INCLUDE_DIRS
The include directories containing headers needed to use Ice.
Ice_LIBRARIES
Component libraries needed to link against to use Ice.
Ice_SLICE_DIRS
The data directories containing interface definitions (
*.ice
files) for Slice (Specification Language for Ice).
Ice component libraries are stored in:
Ice_<COMPONENT>_FOUND
Boolean indicating whether the specified Ice component is found. The
<COMPONENT>
should be written in uppercase.Ice_<COMPONENT>_LIBRARIES
Libraries provided by the specified Ice component. The
<COMPONENT>
should be written in uppercase.
Slice programs are stored in:
Ice_SLICE2CONFLUENCE_EXECUTABLE
Added in version 3.14.
The path to the
slice2confluence
executable.Ice_SLICE2CPP_EXECUTABLE
The path to the
slice2cpp
executable.Ice_SLICE2CS_EXECUTABLE
The path to the
slice2cs
executable.Ice_SLICE2FREEZEJ_EXECUTABLE
The path to the
slice2freezej
executable.Ice_SLICE2FREEZE_EXECUTABLE
The path to the
slice2freeze
executable.Ice_SLICE2HTML_EXECUTABLE
The path to the
slice2html
executable.Ice_SLICE2JAVA_EXECUTABLE
The path to the
slice2java
executable.Ice_SLICE2JS_EXECUTABLE
Added in version 3.4.
The path to the
slice2js
executable.Ice_SLICE2MATLAB_EXECUTABLE
Added in version 3.14.
The path to the
slice2matlab
executable.Ice_SLICE2OBJC_EXECUTABLE
Added in version 3.10.
The path to the
slice2objc
executable.Ice_SLICE2PHP_EXECUTABLE
The path to the
slice2php
executable.Ice_SLICE2PY_EXECUTABLE
The path to the
slice2py
executable.Ice_SLICE2RB_EXECUTABLE
The path to the
slice2rb
executable.
Ice programs are stored in:
Ice_GLACIER2ROUTER_EXECUTABLE
Added in version 3.4.
The path to the
glacier2router
executable.Ice_ICEBOX_EXECUTABLE
Added in version 3.4.
The path to the
icebox
executable.Ice_ICEBOX++11_EXECUTABLE
Added in version 3.10.
The path to the
icebox++11
executable.Ice_ICEBOXADMIN_EXECUTABLE
Added in version 3.4.
The path to the
iceboxadmin
executable.Ice_ICEBOXD_EXECUTABLE
Added in version 3.4.
The path to the
iceboxd
executable.Ice_ICEBOXNET_EXECUTABLE
Added in version 3.4.
The path to the
iceboxnet
executable.Ice_ICEBRIDGE_EXECUTABLE
Added in version 3.10.
The path to the
icebridge
executable.Ice_ICEGRIDADMIN_EXECUTABLE
Added in version 3.4.
The path to the
icegridadmin
executable.Ice_ICEGRIDDB_EXECUTABLE
Added in version 3.10.
The path to the
icegriddb
executable.Ice_ICEGRIDNODE_EXECUTABLE
Added in version 3.4.
The path to the
icegridnode
executable.Ice_ICEGRIDNODED_EXECUTABLE
Added in version 3.4.
The path to the
icegridnoded
executable.Ice_ICEGRIDREGISTRY_EXECUTABLE
Added in version 3.4.
The path to the
icegridregistry
executable.Ice_ICEGRIDREGISTRYD_EXECUTABLE
Added in version 3.4.
The path to the
icegridregistryd
executable.Ice_ICEPATCH2CALC_EXECUTABLE
The path to the
icepatch2calc
executable.Ice_ICEPATCH2CLIENT_EXECUTABLE
Added in version 3.4.
The path to the
icepatch2client
executable.Ice_ICEPATCH2SERVER_EXECUTABLE
Added in version 3.4.
The path to the
icepatch2server
executable.Ice_ICESERVICEINSTALL_EXECUTABLE
Added in version 3.4.
The path to the
iceserviceinstall
executable.Ice_ICESTORMADMIN_EXECUTABLE
Added in version 3.4.
The path to the
icestormadmin
executable.Ice_ICESTORMDB_EXECUTABLE
Added in version 3.10.
The path to the
icestormdb
executable.Ice_ICESTORMMIGRATE_EXECUTABLE
Added in version 3.4.
The path to the
icestormmigrate
executable.
Ice database programs are stored in the following variables (on Windows, they are included with the Ice installation; on other platforms, they are usually available through standard Berkeley DB packages):
Ice_DB_ARCHIVE_EXECUTABLE
Added in version 3.4.
The path to the
db_archive
executable.Ice_DB_CHECKPOINT_EXECUTABLE
Added in version 3.4.
The path to the
db_checkpoint
executable.Ice_DB_DEADLOCK_EXECUTABLE
Added in version 3.4.
The path to the
db_deadlock
executable.Ice_DB_DUMP_EXECUTABLE
Added in version 3.4.
The path to the
db_dump
executable.Ice_DB_HOTBACKUP_EXECUTABLE
Added in version 3.4.
The path to the
db_hotbackup
executable.Ice_DB_LOAD_EXECUTABLE
Added in version 3.4.
The path to the
db_load
executable.Ice_DB_LOG_VERIFY_EXECUTABLE
Added in version 3.4.
The path to the
db_log_verify
executable.Ice_DB_PRINTLOG_EXECUTABLE
Added in version 3.4.
The path to the
db_printlog
executable.Ice_DB_RECOVER_EXECUTABLE
Added in version 3.4.
The path to the
db_recover
executable.Ice_DB_STAT_EXECUTABLE
Added in version 3.4.
The path to the
db_stat
executable.Ice_DB_TUNER_EXECUTABLE
Added in version 3.4.
The path to the
db_tuner
executable.Ice_DB_UPGRADE_EXECUTABLE
Added in version 3.4.
The path to the
db_upgrade
executable.Ice_DB_VERIFY_EXECUTABLE
Added in version 3.4.
The path to the
db_verify
executable.Ice_DUMPDB_EXECUTABLE
Added in version 3.4.
The path to the
dumpdb
executable.Ice_TRANSFORMDB_EXECUTABLE
Added in version 3.4.
The path to the
transformdb
executable.
Cache Variables¶
The following cache variables may also be set:
Ice_<PROGRAM>_EXECUTABLE
The path to the specified
<PROGRAM>
executable; The<PROGRAM>
is the uppercase name of the Ice program as listed in above result variables of executables.Ice_INCLUDE_DIR
The directory containing Ice headers.
Ice_SLICE_DIR
The data directory containing interface definitions for Slice.
Ice_<COMPONENT>_LIBRARY
The path to the library for the specified component. The
<COMPONENT>
should be written in uppercase.
Hints¶
This module accepts the following variables:
Ice_HOME
Set this CMake variable to the root of the Ice installation in order to search for Ice in a custom location.
Note
On Windows, Ice 3.7.0 and later provide libraries via the NuGet package manager. Appropriate NuGet packages will be searched for using
CMAKE_PREFIX_PATH
, or alternativelyIce_HOME
may be set to the location of a specific NuGet package to restrict the search.ICE_HOME
Environment variable (uppercased) may also be set to the root of the Ice installation; The
Ice_HOME
CMake variable takes precedence.Ice_DEBUG
Set this variable to boolean true to enable debug output from this module.
Note
In most cases, none of the above variables need to be set unless multiple Ice
versions are installed and a specific one is required. On Windows, the most
recent version is typically found using the registry. On Unix-like systems,
programs, headers, and libraries are usually found in standard locations,
although Ice_SLICE_DIRS
might not be detected automatically (commonly
known locations are searched). All other variables default based on the value
of Ice_HOME
, if set.
It's also possible to set Ice_HOME
while selectively overriding specific
locations for individual components; This might be required, for example, in
newer versions of Visual Studio if the heuristics are not sufficient to
identify the correct programs and libraries for the specific Visual Studio
version.
Examples¶
Finding the Ice core library and linking it to a project target:
find_package(Ice COMPONENTS Ice)
target_link_libraries(project_target PRIVATE Ice::Ice)
Finding Ice core library and IceSSL library, and linking them to a project target:
find_package(Ice COMPONENTS Ice IceSSL)
target_link_libraries(project_target PRIVATE Ice::Ice Ice::IceSSL)
Finding Ice core library as required component and Ice Freeze library as optional:
find_package(Ice COMPONENTS Ice OPTIONAL_COMPONENTS Freeze)