C++ CMake中FindBLAS和FindLAPACK的使用
我有点被这个工具搞糊涂了 在CMake中查找_包(BLAS)和查找_包(LAPACK) 看起来,根据找到的供应商,不同的源代码是必要的。例如,mkl具有 mkl.h和/或mkl_lapacke.h 但至少有一个lapack的其他实现有一个报头,这个报头就是lapack.h 因此需要不同的头 mkl的somatcopy也是mkl_somatcopy,而其他库显然没有mkl_前缀 如何以一种通用的方式协调这一点,以使find_package(LAPACK)等工具有效地工作 是否有一个标准的标题,因为对于lapacke接口,它似乎不是lapacke.hC++ CMake中FindBLAS和FindLAPACK的使用,c++,c,cmake,lapack,lapacke,C++,C,Cmake,Lapack,Lapacke,我有点被这个工具搞糊涂了 在CMake中查找_包(BLAS)和查找_包(LAPACK) 看起来,根据找到的供应商,不同的源代码是必要的。例如,mkl具有 mkl.h和/或mkl_lapacke.h 但至少有一个lapack的其他实现有一个报头,这个报头就是lapack.h 因此需要不同的头 mkl的somatcopy也是mkl_somatcopy,而其他库显然没有mkl_前缀 如何以一种通用的方式协调这一点,以使find_package(LAPACK)等工具有效地工作 是否有一个标准的标题,因为
最后,Accelerate被列为一个选项,但是Accelerate包括LAPACK 3.2.1等效功能,它忽略了在MKL和当前netlib LAPACKE 3.5中可用的LAPACKE接口。Ok,因此我给出的示例是blas扩展的示例。blas功能本身都是相同的。唯一的问题是mkl和其他blas/lapack接口之间的头不同。就cmake而言,上面提到的find_package()例程有点不合适。我发现搜索mkl最容易,如果找到就使用它,否则返回到cmake的findblas例程,然后我使用add_定义定义一个预处理器宏,在mkl和其他实现之间进行更改