Make Tappas CMake/C++ friendly

I wanted to talk about in this post about C++ development with Tappas.

After a few weeks, coding with hailo and the hailo-all package I really have to say that for people who are coding C++ only and not using Gstreamer and the meson-buildsystem the whole experience is a bit annoying.

I don’t need Gstreamer. And I don’t get why you make a CMake config for the hailort lib but not for tappas even though all of your examples demand headers from it.

It can’t be that I have to make an include safari into tappas and fiddle my way around unnecessary linker errors (which I can handle, but why do have to ?!?).

Here is a short snippet of what the reality looks like:

set(LINUX_INCLUDE_TAPPAS "/usr/include/hailo/tappas")
set(LINUX_INCLUDE_XTENSOR "/usr/include/hailo/tappas/sources/xtensor/include")
set(LINUX_INCLUDE_XTL "/usr/include/hailo/tappas/sources/xtl/include") set(LINUX_INCLUDE_RAPIDJSON "/usr/include/hailo/tappas/sources/rapidjson/include")

target_include_directories(${PROJECT_NAME}
    PUBLIC

        # NOTE: 
        # These tappas subdirectories rely on the apt hailo-all (v4.20) Raspberry Pi Package which installs tappas.
        # Unfortunatly these tappas directories are not accessible with including: find_package(HailoRT REQUIRED) or HailoRT::libhailort.
        # Tappas is constructed for the meson build system and not for cmake. But it's own dependencies are mostly header only libraries.
        # Therefore we have to include the directories containing the headers we need manually
        # Also we have to add these paths to intellisense with the c_cpp_properties.json file in the .vscode folder.
        # I will stick to this approach because with this hailo-all package solution, i will always get the compatible version of the libraries. 
        
        #Tappas Directory for Hailo
        ${LINUX_INCLUDE_TAPPAS}

        #Tappas Subdirectory Xtensor for Hailo
        ${LINUX_INCLUDE_XTENSOR}

        #Tappas Subdirectory XTL for Hailo
        ${LINUX_INCLUDE_XTL}

        #Tappas Subdirectory RapidJSON for Hailo
        ${LINUX_INCLUDE_RAPIDJSON}

)

And another thing: Please update your requirements for all the examples that they actually need tappas.

For example, here:

Btw, at least some comments regarding C++ code in your examples would be great, since we don’t have an SDK for C++. It can’t be that I have to guess my way to the end or accept that it just works without understanding why (I do now. But I had to work myself through everything the hard way)…

The moment I found out (myself and without any hint in the examples) that everything I needed was in Tappas and already included in hailo-all was, let’s just say, disturbing…

Please make Tappas, either the core version included in hailo-all or the GitHub version, C++/CMake friendly. Thank you.

Hey @user115,

Thank you very much for the feedback.

We appreciate your patience and feedback.
I have opened a Jira ticket based on this and will update you on the progress.

For now ,I can share that we are currently in discussions about the future of TAPPAS and its proper usage. We will definitely take the community feedback into consideration.

Thanks

Thank you for your consideration. I really hope that tappas or it least the most important headers are in one lib. I also asked myself why you split everything so much up (took a while to connect the dots). To me, the examples + tappas + hailort are one family. You could make one repo and build options for cmake to choose what you need. Sorry for my temper. I appreciate your work, even if it didn’t sound like that.

1 Like