cmake找不到通过软件包管理器安装的BLAS

时间:2019-09-10 20:41:44

标签: cmake blas

我有一个基于Makefile的项目,需要链接到BLAS线性代数库。至少可以说,该库有很多不同版本,因此尝试使用make规则查找它会很痛苦。幸运的是,cmake有一个FindBLAS.cmake模块,该模块应该使它更容易。除了我无法正常工作。

在同时通过yum安装了blas-developenblas-devel的CentOS7上,我可以做到

> ldconfig -p | grep blas
    libopenblas64_.so.0 (libc6,x86-64) => /lib64/libopenblas64_.so.0
    libopenblas64_.so (libc6,x86-64) => /lib64/libopenblas64_.so
    libopenblas64.so.0 (libc6,x86-64) => /lib64/libopenblas64.so.0
    libopenblas64.so (libc6,x86-64) => /lib64/libopenblas64.so
    libopenblasp64_.so.0 (libc6,x86-64) => /lib64/libopenblasp64_.so.0
    libopenblasp64_.so (libc6,x86-64) => /lib64/libopenblasp64_.so
    libopenblasp64.so.0 (libc6,x86-64) => /lib64/libopenblasp64.so.0
    libopenblasp64.so (libc6,x86-64) => /lib64/libopenblasp64.so
    libopenblasp.so.0 (libc6,x86-64) => /lib64/libopenblasp.so.0
    libopenblasp.so (libc6,x86-64) => /lib64/libopenblasp.so
    libopenblaso64_.so.0 (libc6,x86-64) => /lib64/libopenblaso64_.so.0
    libopenblaso64_.so (libc6,x86-64) => /lib64/libopenblaso64_.so
    libopenblaso64.so.0 (libc6,x86-64) => /lib64/libopenblaso64.so.0
    libopenblaso64.so (libc6,x86-64) => /lib64/libopenblaso64.so
    libopenblaso.so.0 (libc6,x86-64) => /lib64/libopenblaso.so.0
    libopenblaso.so (libc6,x86-64) => /lib64/libopenblaso.so
    libopenblas.so.0 (libc6,x86-64) => /lib64/libopenblas.so.0
    libopenblas.so (libc6,x86-64) => /lib64/libopenblas.so
    libgslcblas.so.0 (libc6,x86-64) => /lib64/libgslcblas.so.0
    libblas.so.3 (libc6,x86-64) => /lib64/libblas.so.3
    libblas.so (libc6,x86-64) => /lib64/libblas.so

因此libblas.solibopenblas.so都位于默认库路径中。而且,如果我只是将-lblas-lopenblas赋予链接器,一切都会正常。但是,当我尝试使用cmake自动查找它时,我得到了

> cmake3 --find-package -DCOMPILER_ID=GNU -DLANGUAGE=CXX -DMODE=EXIST -DNAME=BLAS
BLAS not found.
CMake Error: Problem processing arguments. Aborting.

cmake是3.12版,相同的命令适用于其他软件包(Java,Boost,Git等)。我希望在/usr/share/cmake3/Modules/FindBLAS.cmake找到FindBLAS.cmake。

我在做什么错??

0 个答案:

没有答案