Currently, library users need to use -I${include_dir}/uhal to be able to include library headers.
They should be able to omit any -I flag if the headers are installed in a default system header. This means using #include <uhal/...> in public headers and client code. For this issue, the relevant part is fixing public headers.
A good example of how to do it (which saves us the trouble of listing header files, too!) comes from wlroots
This problem was called out in lnls-dig/afc-epics-ioc#43 (comment)