Hopping Down the Coding Trail: Unearthing a Cool Easter Egg in RTI Connext DDS Pro
Written by Neil Puthuff & Israel Blancas
April 9, 2020
Software programs can sometimes contain an 'Easter Egg' -- some hidden feature that delights the finder by being fun, unexpected or useful. The Google search engine site has a few dozen, by way of example. Try searching the terms “askew” or “do a barrel roll,” which will produce some entertaining results. Funnily enough, we recently came face to face with an Easter Egg in one of RTI’s own products that we’d never heard about.
A little backstory first: We had been asked to create a Connext DDS application that needed to be buildable on many different platforms -- Windows, Intel Linux, Raspberry Pi, etc. CMake seemed like a good choice to help get this going, as it's an open-source software tool that uses a compiler-independent approach, supports applications that depend on multiple libraries and, crucially, works across platforms.
We weren't wrong; CMake is indeed very powerful, and offers lots of intuitive ways to find libraries, set paths, select alternate file sets, and more. Though we'd used it on projects in the past, we realized early that the multi-host component of this task was going to take some research. So, we wanted to fast-track our way through that learning curve a little bit and become proficient at CMake in a hurry. We started to dig in…
Then we stumbled upon RTI's very own bit of buried treasure -- an Easter Egg that has in fact been shipping with Connext DDS Pro since version 5.3: A “CMake Helper” called FindRTIConnextDDS.cmake
FindRTIConnextDDS.cmake is a CMake script that helps CMake to find Connext and set the correct paths for libraries and include files, as well as set options and compiler definitions. It is similar to other third-party integrations done with other libraries or programs like OpenSSL or Python that came built in with the CMake installation. And it does all of that across lots of different host environments and build targets. It was surprisingly simple to use:
Within just a few minutes, we had a working multi-platform build creator for our Connext projects, tested on Windows, Linux and Raspberry Pi. An Easter Egg over easy, if we may mix our metaphors.
Getting the Goodies
If you have an installation of RTI Connext Pro (version 5.3 or later), the file is located at:
Note that the capabilities of this file are being improved with every release of Connext; the most-recent version (with examples) can be downloaded from the RTI Community GitHub site at: https://github.com/rticommunity/rticonnextdds-examples/tree/master/examples/connext_dds/build_systems/cmake
Neil and Israel
About the authors:
Neil Puthuff is a Senior Software Integration Engineer for Real-Time Innovations (RTI). Neil graduated with a B.Sc. in Management and has been named inventor on 13 different US patents.
Israel Blancas is an Internal Tools Engineer at Real-Time Innovations (RTI). Israel graduated with a degree in Software Engineering from the University of Granada.