在CMake中,我使用find_package(BLAS REQUIRED)
,并根据需要使用BLAS_FOUND
,BLAS_LINKER_FLAGS
,BLAS_LIBRARIES
个变量。
我的问题是,我如何根据已选择的BLAS实现找到应包含在CMake中的include目录?
对于Accelerate框架和OpenBLAS,未在macOS上设置 BLAS_INCLUDE_DIR
。它也不是FindBLAS文档的一部分。
答案 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/")