iceoryx_utils and iceoryx_posh are deployed as independent cmake packages. Posh is using some functions from utils and is depending on it. You are able to build posh and utils and integrate in into existing cmake projects.
Before installing iceoryx you need a XCode installation, git and optional an installed ncurses library for the introspection client. To install ncurses locally into your build folder follow these steps
cd iceoryx
ICEORYX_DIR=$PWD
mkdir -p build
cd build
git clone https://github.com/mirror/ncurses.git
cd ncurses
git checkout v6.2
./configure --prefix=$ICEORYX_DIR/build/dependencies/ --exec-prefix=$ICEORYX_DIR/build/dependencies/ --with-termlib
make -j12
make install
If you would like to use our Cyclone DDS Gateway you have to install Cyclone DDS first, see https://github.com/eclipse-cyclonedds/cyclonedds.
Although we strive to be fully POSIX-compliant, we recommend using Ubuntu 18.04 and at least GCC 7.5.0 for development.
You will need to install the following packages:
sudo apt install cmake libacl1-dev libncurses5-dev pkg-config
Additionally, there is an optional dependency to the MIT licensed cpptoml library, which is used to parse a RouDi config file for the mempool config. cpptoml
NOTE: Requires CMake version 3.5 or higher.
The CMakeLists.txt
from iceoryx_meta
can be used to easily develop iceoryx with an IDE.
-
Clone the repository
git clone https://github.com/eclipse/iceoryx.git
-
Generate the necessary build files
cd iceoryx cmake -Bbuild -Hiceoryx_meta -DTOML_CONFIG=ON # when you have installed external dependencies like ncurses you have to add them # to your prefix path cmake -Bbuild -Hiceoryx_meta -DTOML_CONFIG=ON -DCMAKE_PREFIX_PATH=$(PWD)/build/dependencies/
-
Compile the source code
cmake --build build
switch | description |
---|---|
dds_gateway |
builds the iceoryx dds gateway using the cyclonedds dds stack, cyclonedds will be fetched and built as part of the build, see cyclonedds for details |
examples |
builds all examples |
one-to-many |
Restricts to 1:n communication. If not set the default communication is n:m |
introspection |
the console introspection client which requires an installed ncurses library with terminfo support |
test |
enables module-, integration- and component-tests |
TOML_CONFIG |
activates config file support by using toml, if this is deactivated the central broker RouDi is not being build |
switch | description |
---|---|
IOX_MAX_PUBLISHERS |
the maximum number of publishers one RouDi instance can manage |
IOX_MAX_SUBSCRIBERS_PER_PUBLISHER |
the maximum number of subscriber a publisher can deliver chunks to |
IOX_MAX_PUBLISHER_HISTORY |
the maximum number chunks available for the publisher history |
IOX_MAX_CHUNKS_ALLOCATED_PER_PUBLISHER_SIMULTANEOUSLY |
the maximum number of chunks a sender can allocate at a given time |
IOX_MAX_SUBSCRIBERS |
the maximum number of subscribers one RouDi instance can manage |
IOX_MAX_CHUNKS_HELD_PER_SUBSCRIBER_SIMULTANEOUSLY |
the maximum number of chunks a subscriber can hold at a given time |
IOX_MAX_INTERFACE_NUMBER |
the maximum number for interface ports, which are used for e.g. gateways |
Have a look at iceoryx_posh/cmake/iceoryx_posh_deployment.cmake
for the default values of this constants.
As an alternative we provide our build-test script which we use to integrate iceoryx into our infrastructure. This currently only works for Linux and QNX.
-
Clone the repository
git clone https://github.com/eclipse/iceoryx.git
-
Build everything
cd iceoryx ./tools/iceoryx_build_test.sh
With the following arguments you can add additional features:
switch | description |
---|---|
clean |
Removes the build directory and performs a clean build. If you have installed ncurses locally into your build directory you have to reinstall it first. |
test |
Enables module-, integration- and component-tests. The Googletest-Framework will be automatically fetched from github and the test will be executed and the end of the script. |
Alternatively, iceoryx can be built with colcon to provide a smooth integration for ROS2 developers.
mkdir -p iceoryx_ws/src
cd $_
git clone https://github.com/eclipse/iceoryx.git
cd ..
colcon build
This build method makes the most sense in combination with rmw_iceoryx