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.