在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