Do you have any recommendations on creating a pipeline for developing a plugin? How might one consume this project for plugin development?
I believe a plugin developer needs to include mha_plugin.hh and link to libopenmha.*, correct?
Yes, you need that header and that shared library to derive your own plugin class from the base class MHAPlugin::plugin_t<>. More headers from libmha are needed if you make use of the functions and classes declared in them.
Am I correct that neither the pre-compiled binary package nor the install target exposes mha_plugin.hh?
For Linux, we provide the libopenmha-dev package which installs all headers in /usr/include/openmha/, which you can add to the include path of the compiler in a plugin development project. You need to ensure that you are using the same compiler for compiling your plugin as was used for openMHA, otherwise there may be linker and/or runtime incompatibilities.
Because of this, it is easier to develop your own plugins inside the openMHA source tree as cloned from git: Add a new directory below mha/plugins, copy the Makefile and the source file of one of the example plugins into that directory, rename the source file from my_new_plugin/example2.cpp to my_new_plugin/my_new_plugin.cpp and start with your modifications. Your new plugin directory will be detected and compiled by the Make based build system. See COMPILATION.md for instructions how to compile openMHA on the different plattforms. You can adapt compiler flags as desired in the top-level file config.mk after it has been created by ./configure.
If so, would you recommend that a plugin developer explicitly includes ${openmha_root}/mha/libmha/src in their build-system?
My current recommendation is to develop new plugin inside the git workspace right next to all other plugins as described above, but it is certainly possible to adapt the include and linker paths in separate plugin projects. In this case, you would add the /mha/libmha/src to the include path, yes.