在CMake中,我使用find_package(BLAS REQUIRED)
,并根据情况使用BLAS_FOUND
,BLAS_LINKER_FLAGS
,BLAS_LIBRARIES
变量。在CMake中查找BLAS包含目录
我的问题是,我如何根据已经选择的BLAS实现找到应包含在CMake中的include目录?
BLAS_INCLUDE_DIR
未在macOS上为Accelerate框架或OpenBLAS设置。它也不是FindBLAS的文档的一部分。
在CMake中,我使用find_package(BLAS REQUIRED)
,并根据情况使用BLAS_FOUND
,BLAS_LINKER_FLAGS
,BLAS_LIBRARIES
变量。在CMake中查找BLAS包含目录
我的问题是,我如何根据已经选择的BLAS实现找到应包含在CMake中的include目录?
BLAS_INCLUDE_DIR
未在macOS上为Accelerate框架或OpenBLAS设置。它也不是FindBLAS的文档的一部分。
如果没有提供脚本,您可以自己编写一个脚本,或者扩展现有的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)
这将在/usr/include/
,/usr/local/include
,$ENV{BLAS_HOME}/include
搜索cblas.h
,并设置在BLAS_INCLUDE_DIRS找到路径。
你可以在你的项目中src/cmake/FindBLAS.cmake
文件中添加这个脚本,然后告诉有关它的顶级CMake的文件:
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/src/cmake/")
应该由BLAS它设置这些变量提供的cmake-config文件。您可以在那里检查设置的内容。 – Hayt
@Hayt:BLAS没有提供cmake-config文件,只有随CMake提供的[FindBLAS.cmake](https://github.com/Kitware/CMake/blob/master/Modules/FindBLAS.cmake)脚本。该脚本只设置*链接器相关的*变量('BLAS_LIBRARIES'和'BLAS_LINKER_FLAGS')。 – Tsyvarev
那么你将不得不自己设置包含目录。 find_package()只设置FindBLAS.cmake中的变量 – Hayt