Я немного смущен утилитой
find_package (BLAS) и find_package (LAPACK) в CMake.
Кажется, что в зависимости от найденного поставщика, требуется другой исходный код. Например, мкл имеет
mkl.h и / или mkl_lapacke.h
но по крайней мере одна другая реализация lapack имеет заголовок, который просто называется lapacke.h
так нужны разные заголовки.
а также соматкопия для mkl — это mkl_somatcopy, тогда как другие библиотеки явно не имеют префикса mkl_.
Как вы согласовываете это в общем виде, чтобы заставить инструмент, такой как find_package (LAPACK) работать эффективно?
Есть ли стандартный заголовок, потому что он не похож на lapacke.h для интерфейса lapacke?
Наконец, Accelerate указан в качестве опции, но Accelerate включает в себя эквивалентные функции LAPACK 3.2.1, в которых отсутствует интерфейс LAPACKE, который является доступны в MKL и текущем netlib lapacke 3.5 ..
Итак, пример, который я привел, является примером расширения blas. Сами функции бласа одинаковы. Единственная проблема заключается в различном заголовке между mkl и другими интерфейсами blas / lapack. Что касается cmake, то упомянутые процедуры find_package () немного неуместны. Я нашел, что проще всего искать mkl, использовать его, если он найден, иначе вернуться к процедурам findblas в cmake, затем я использую add_definitions, чтобы определить макрос препроцессора для переключения между mkl и другими реализациями …