使用 CMake 查找 BLAS 包含目录

Sør*_*sen 8 cmake blas

在 CMake 中,我使用find_package(BLAS REQUIRED)并酌情使用BLAS_FOUND, BLAS_LINKER_FLAGS,BLAS_LIBRARIES变量。

我的问题是,我如何根据已选择的 BLAS 实现,找到应包含在 CMake 中的包含目录?

BLAS_INCLUDE_DIR没有在 macOS 上为 Accelerate 框架或 OpenBLAS 设置。它也不是 FindBLAS 文档的一部分。

pau*_*l-g 2

如果尚未提供脚本,您可以自己编写一个脚本或扩展现有的 FindBLAS.cmake 以设置所需的路径 (BLAS_INCLUDE_DIRS)。

例如,您可以使用find_path来搜索包含一些标准 BLAS 包含文件的目录,或者特别是项目中所需的文件。您可以包含您可能希望安装 BLAS 的默认公共目录,或基于环境变量的路径。Linux 的一个例子:

find_path(BLAS_INCLUDE_DIRS cblas.h
  /usr/include
  /usr/local/include
  $ENV{BLAS_HOME}/include)
Run Code Online (Sandbox Code Playgroud)

cblas.h这将在/usr/include/、中搜索/usr/local/include$ENV{BLAS_HOME}/include并将找到的路径设置在 BLAS_INCLUDE_DIRS 中。

您可以将此脚本添加到src/cmake/FindBLAS.cmake项目的文件中,然后使用以下命令告诉您的顶级 Cmake 文件:

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/src/cmake/")
Run Code Online (Sandbox Code Playgroud)