Hi,
the obvious solution to this is to link to the c-cindings (cBLAS, LAPACKE). While BLAS is truly a PITA, most systems have quite sane cBLAS bindings (notable exception is OpenBLAS...) and often it is enough to check whether the system has some libcBLAS.so somewhere in the path.
the big issue of having a header only BLAS are the long, long, long compile times.
Two solutions to this:
- precompiled headers
- from a header only C++BLAS library it is trivial to create a compiled library for the common cases where all elements have the same type.