使用CMake查找BLAS包含目录

时间:2016-09-28 13:20:11

标签: cmake blas

在CMake中,我使用find_package(BLAS REQUIRED),并根据需要使用BLAS_FOUNDBLAS_LINKER_FLAGSBLAS_LIBRARIES个变量。

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

对于Accelerate框架和OpenBLAS,未在macOS上设置

BLAS_INCLUDE_DIR。它也不是FindBLAS文档的一部分。

1 个答案:

答案 0 :(得分:1)

如果没有提供脚本,您可以自己编写一个脚本,或者扩展现有的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)

这将在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/")