【问题标题】:(macOS Big Sur) CMake Could NOT find BLAS (missing: BLAS_LIBRARIES)(macOS Big Sur)CMake 找不到 BLAS(缺少:BLAS_LIBRARIES)
【发布时间】:2021-06-23 23:42:17
【问题描述】:

我正在尝试在 macOS 上创建 MultiNest/pymultinest;该程序需要 openblas 和 lapack 作为依赖项。我已经使用自制软件安装了两者,但是当我尝试在 MultiNest 构建目录中进行 cmake 时,出现以下错误:

CMake Error at /usr/local/Cellar/cmake/3.20.5/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find BLAS (missing: BLAS_LIBRARIES)
Call Stack (most recent call first):
  /usr/local/Cellar/cmake/3.20.5/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE)
  /usr/local/Cellar/cmake/3.20.5/share/cmake/Modules/FindBLAS.cmake:1045 (find_package_handle_standard_args)
  /usr/local/Cellar/cmake/3.20.5/share/cmake/Modules/FindLAPACK.cmake:265 (find_package)
  /usr/local/Cellar/cmake/3.20.5/share/cmake/Modules/FindLAPACK.cmake:291 (_lapack_find_dependency)
  src/CMakeLists.txt:31 (FIND_PACKAGE)

我已经声明了许多路径;

export LDFLAGS="-L/usr/local/opt/openblas/lib"
export CPPFLAGS="-I/usr/local/opt/openblas/include"
export PKG_CONFIG_PATH="/usr/local/opt/openblas/lib/pkgconfig"
export LDFLAGS="-L/usr/local/opt/lapack/lib"
export CPPFLAGS="-I/usr/local/opt/lapack/include"
export PKG_CONFIG_PATH="/usr/local/opt/lapack/lib/pkgconfig"

export LD_LIBRARY_PATH=/usr/local/opt/openblas:$LD_LIBRARY_PATH
export BLAS=/usr/local/opt/openblas/lib/libopenblas.a

为什么 cmake 在 macOS 上找不到 BLAS?谢谢!

【问题讨论】:

    标签: cmake macos-big-sur openblas


    【解决方案1】:

    您需要将/usr/local/opt/lapack/usr/local/opt/openblas 添加到CMAKE_PREFIX_PATH,如下所示:

    $ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release \
        -DCMAKE_PREFIX_PATH="/usr/local/opt/lapack;/usr/local/opt/openblas"
    

    Homebrew 不会将它们符号链接到 /usr/local 以避免与 Apple 自己的 Accelerate.framework BLAS 实现发生冲突。用 Homebrew 的话来说,这样的包被称为“仅桶装”。

    您还应该取消设置所有您设置的环境变量,因为 CMake 负责设置包含和库路径。

    感兴趣的文档链接:

    【讨论】:

    • 您可能还需要摆弄BLA_VENDOR 变量:如果默认(空)不起作用,OpenBLASGeneric 之一应该可以工作。
    • 我已经清除了我为 lapack/blas 设置的导出环境变量,并尝试为 cmake 添加上面的标志,但它导致了完全相同的错误。如何更改 BLA_VENDOR 变量?那是我必须传递给 cmake 的标志吗?
    猜你喜欢
    • 2021-03-31
    • 2021-12-04
    • 2021-11-18
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 2022-01-09
    • 2021-11-26
    • 2021-02-27
    相关资源
    最近更新 更多