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:

  • Freeze

  • Glacier2

  • Ice

  • IceBox

  • IceDB

  • IceDiscovery

  • IceGrid

  • IceLocatorDiscovery

  • IcePatch

  • IceSSL

  • IceStorm

  • IceUtil

  • IceXML

  • Slice

Ice 3.7 and later also include C++11-specific components:

  • Glacier2++11

  • Ice++11

  • IceBox++11

  • IceDiscovery++11

  • IceGrid++11

  • IceLocatorDiscovery++11

  • IceSSL++11

  • IceStorm++11

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, use Ice::Glacier2 for the Ice Glacier2 library, or Ice::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 alternatively Ice_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)