使用 cmake FindBLAS 到 link OpenBLAS
Use cmake FindBLAS to link OpenBLAS
我正在使用cmake 3.16
,我知道cmake支持通过FindBLAS
(here)查找OpenBLAS
。
我正在尝试 link OpenBLAS
我的 C++ 项目。这是我的 CMakeLists.txt
.
cmake_minimum_required(VERSION 3.15)
project(my_project)
# source file
file(GLOB SOURCES "src/*.cpp")
# executable file
add_executable(main.exe ${SOURCES})
# link openblas
set(BLA_VENDER OpenBLAS)
find_package(BLAS REQUIRED)
if(BLAS_FOUND)
message("OpenBLAS found.")
include_directories(${BLAS_INCLUDE_DIRS})
target_link_libraries(main.exe ${BLAS_LIBRARIES})
endif(BLAS_FOUND)
如果我运行cmake
,它运行只是找到,并输出OpenBLAS found.
。但是,如果我开始编译代码(make VERBOSE=1
),库没有linked,所以代码无法编译。这是错误信息:
fatal error: cblas.h: No such file or directory
#include <cblas.h>
^~~~~~~~~
compilation terminated.
我成功安装了OpenBLAS。头文件在 /opt/OpenBLAS/include
中,共享库在 /opt/OpenBLAS/lib
中。我的 OS 是 ubuntu 18.04。
有什么帮助吗?谢谢!
谢谢 Tsyvarev。我发现了问题。
我尝试使用 message()
来打印变量。
message(${BLAS_LIBRARIES})
给出:
/opt/OpenBLAS/lib/libopenblas.so
所以共享库找到了。
然而,对于 BLAS_INCLUDE_DIRS
,它给出:
message(${BLAS_INCLUDE_DIRS})
CMake Error at CMakeLists.txt:27 (message):
message called with incorrect number of arguments
原来BLAS_INCLUDE_DIRS
不在FindBLAS
变量中。所以我手动添加包含头文件:
set(BLA_VENDER OpenBLAS)
find_package(BLAS REQUIRED)
if(BLAS_FOUND)
message("OpenBLAS found.")
include_directories(/opt/OpenBLAS/include/)
target_link_libraries(main.exe ${BLAS_LIBRARIES})
endif(BLAS_FOUND)
这次编译没有错误。除了使用 include_directories()
,您还可以尝试使用 find_path()
(check this)。
我正在使用cmake 3.16
,我知道cmake支持通过FindBLAS
(here)查找OpenBLAS
。
我正在尝试 link OpenBLAS
我的 C++ 项目。这是我的 CMakeLists.txt
.
cmake_minimum_required(VERSION 3.15)
project(my_project)
# source file
file(GLOB SOURCES "src/*.cpp")
# executable file
add_executable(main.exe ${SOURCES})
# link openblas
set(BLA_VENDER OpenBLAS)
find_package(BLAS REQUIRED)
if(BLAS_FOUND)
message("OpenBLAS found.")
include_directories(${BLAS_INCLUDE_DIRS})
target_link_libraries(main.exe ${BLAS_LIBRARIES})
endif(BLAS_FOUND)
如果我运行cmake
,它运行只是找到,并输出OpenBLAS found.
。但是,如果我开始编译代码(make VERBOSE=1
),库没有linked,所以代码无法编译。这是错误信息:
fatal error: cblas.h: No such file or directory
#include <cblas.h>
^~~~~~~~~
compilation terminated.
我成功安装了OpenBLAS。头文件在 /opt/OpenBLAS/include
中,共享库在 /opt/OpenBLAS/lib
中。我的 OS 是 ubuntu 18.04。
有什么帮助吗?谢谢!
谢谢 Tsyvarev。我发现了问题。
我尝试使用 message()
来打印变量。
message(${BLAS_LIBRARIES})
给出:
/opt/OpenBLAS/lib/libopenblas.so
所以共享库找到了。
然而,对于 BLAS_INCLUDE_DIRS
,它给出:
message(${BLAS_INCLUDE_DIRS})
CMake Error at CMakeLists.txt:27 (message):
message called with incorrect number of arguments
原来BLAS_INCLUDE_DIRS
不在FindBLAS
变量中。所以我手动添加包含头文件:
set(BLA_VENDER OpenBLAS)
find_package(BLAS REQUIRED)
if(BLAS_FOUND)
message("OpenBLAS found.")
include_directories(/opt/OpenBLAS/include/)
target_link_libraries(main.exe ${BLAS_LIBRARIES})
endif(BLAS_FOUND)
这次编译没有错误。除了使用 include_directories()
,您还可以尝试使用 find_path()
(check this)。