首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能在Windows上使用xtensor

不能在Windows上使用xtensor
EN

Stack Overflow用户
提问于 2021-03-30 15:41:25
回答 1查看 347关注 0票数 0

免责声明:我是构建/make/packages/cmake的新手。

我的目标:在C++中使用xtensor-blas

My env: Win10 x64,CLion2021

我的问题:无法获得最简单的示例来编译。关于项目依赖关系。

我试过:

1)使用我所能做的每一个教程,手动下载和编译openBLAST --总是在不同的问题上停止。要么我没有"nmake“,要么由于某种原因构建失败,或者我得到了”未定义的引用“等等-我已经不知所措了几天。一步一步的演练将不胜感激。

2)我得到的最接近的是使用anaconda conda install -c conda-forge openblas,然后复制粘贴从xtlxtensorxtensor-blas到我的项目的目录。我的CMakeLists.txt:

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.19)
project(tstxtensor3)

set(CMAKE_CXX_STANDARD 20)

add_executable(tstxtensor3 main.cpp)

include_directories(.)

add_definitions(-DHAVE_CBLAS=1)

set(OpenBLAS_DIR c:/Users/pruglo/anaconda3/envs/evn/Library/share/cmake/OpenBLAS/)
find_package(OpenBLAS REQUIRED)

if (OpenBLAS_FOUND)
    include_directories(${OpenBLAS_INCLUDE_DIRS})
    target_link_libraries(tstxtensor3 c:/Users/pruglo/anaconda3/envs/evn/Library/lib/openblas.lib ${OpenBLAS_LIBRARY})
else ()
    message("OpenBLAS NOT FOUND!")
endif ()

Cmake成功地加载,OpenBLAS_FOUNDtrue。但是当我编译cpp时,我得到了error while loading shared libraries: openblas.dll: cannot open shared object file: No such file or directory Process finished with exit code 127

注意:OpenBLAS_INCLUDE_DIRS扩展到c:/Users/pruglo/anaconda3/envs/evn/Library/include/openblasOpenBLAS_LIBRARY扩展到c:/Users/pruglo/anaconda3/envs/evn/Library/bin/openblas.dll

附加问题

xtensor-blas

  • can需要LAPACK或其他东西吗?我可以移植地构建我的项目,这样我就不需要为我开发的每台pc安装所有的东西了?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-31 08:28:53

免责声明:我不是Windows专家(我只是在持续集成中使用它进行测试)。

您应该能够使用xtensor提供的目标。因此,应该做的是(在任何平台上):

代码语言:javascript
复制
cmake_minimum_required(VERSION 3.1)

set(CMAKE_BUILD_TYPE Release)

project(myexec)
find_package(xtensor)
find_package(xtensor-blas)
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} xtensor xtensor-blas)

既然您谈论的是conda,这确实是我所发现的最简单的,并且可以在所有平台上工作。我真的没必要做太多的事

代码语言:javascript
复制
conda install -c conda-forge cmake xtensor xtensor-blas

(在我加载的环境中)。

这里可能有一个陷阱:注意我使用了来自conda的CMake。可能是它为conda配置了正确的路径(但我并不是很确定)。

为了完整起见,我认为您可以使用(在加载了conda环境的源目录中):

代码语言:javascript
复制
conda install -c conda-forge ninja
cmake -G "NMake Makefiles" -Bbuild
cd build
nmake

为了独立起见,我使用了文档中的一个示例进行了测试:

代码语言:javascript
复制
#include <xtensor.hpp>
#include <xtensor-blas/xlinalg.hpp>

int main()
{
    xt::xarray<double> a = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    auto d = xt::linalg::det(a);
    std::cout << d << std::endl;  // 6.661338e-16
    return 0;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66874119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档