为什么 cmake 找不到 boost 库的组件,还是我做了一些根本错误的事情?

问题描述 投票:0回答:1

我有一个给定的随机游走器实现。 我使用的是 Windows 10,通常,我更喜欢 Linux,但为此,我稍后可能需要我的 GPU,并且我不想在这台机器上进行双启动。

文档仅此:

安装 使用 pip install rw_noise 从 PyPI 安装。

构建库本身是用C++实现的,需要一个 支持 C++20 标准的现代编译器。此外, 必须提供以下库:

  • Boost(支持 Python 和 NumPy)
  • OpenMP
  • Python3
  • 本征3
  • Magma、Cuda(可选,用于 GPU 求解器)

要构建库,请调用

python -m build
,然后安装
pip install <path_to_wheel>
,其中 可能是 创建了扩展名为 .whl 的 dist 子文件夹。

当尝试使用 PyPi 运行安装时,我收到一条很长的错误消息,但重要的部分应该如下:

找不到Boost(缺少:python numpy)(找到版本“1.66.0”)

我从他们的页面下载了 boost 二进制文件,并将其提取到各个位置,希望 CMake 能够找到它。 我已经检查过 Python 和 NumPy 都包含在这个 boost 版本中。

我已经分别尝试了所有需要的依赖项,据我所知,除了 Magma 和 Cuda 之外,它们似乎都可以工作,因为它们是可选的,我决定首先跳过它们,一旦我知道我可以得到它,我决定稍后添加它们工作。

我将 boost 文件添加为环境路径“BOOST_ROOT” 我还将 lib 文件夹添加到了路径变量中。

现在我意识到我可能不应该使用二进制 boost 版本,所以我将其更改为普通版本 这次我得到了以下错误:

CMake 警告位于 C:/Users/User/AppData/Local/Temp/pip-build-env-ujbspz4s/overlay/Lib/site-packages/cmake/data/share/cmake-3.28/Modules/FindBoost.cmake:1398 (信息): 新的 Boost 版本可能具有不正确或缺失的依赖项并导入 目标 调用堆栈(首先是最近的调用): C:/Users/User/AppData/Local/Temp/pip-build-env-ujbspz4s/overlay/Lib/site-packages/cmake/data/share/cmake-3.28/Modules/FindBoost.cmake:1523 (_Boost_COMPONENT_DEPENDENCIES) C:/Users/User/AppData/Local/Temp/pip-build-env-ujbspz4s/overlay/Lib/site-packages/cmake/data/share/cmake-3.28/Modules/FindBoost.cmake:2134 (_Boost_MISSING_DEPENDENCIES) CMakeLists.txt:22 (find_package)

CMake 警告:C:/Users/User/AppData/Local/Temp/pip-build-env-ujbspz4s/overlay/Lib/site-packages/cmake/data/share/cmake-3.28/Modules/FindBoost.cmake:1398 (信息): 新的 Boost 版本可能具有不正确或缺失的依赖项并导入 目标 调用堆栈(首先是最近的调用): C:/Users/User/AppData/Local/Temp/pip-build-env-ujbspz4s/overlay/Lib/site-packages/cmake/data/share/cmake-3.28/Modules/FindBoost.cmake:1523 (_Boost_COMPONENT_DEPENDENCIES) C:/Users/User/AppData/Local/Temp/pip-build-env-ujbspz4s/overlay/Lib/site-packages/cmake/data/share/cmake-3.28/Modules/FindBoost.cmake:2134 (_Boost_MISSING_DEPENDENCIES) CMakeLists.txt:22 (find_package)

CMake 错误:C:/Users/User/AppData/Local/Temp/pip-build-env-ujbspz4s/overlay/Lib/site-packages/cmake/data/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:230 (信息): 找不到 Boost(缺少:python numpy)(找到版本“1.84.0”) 调用堆栈(首先是最近的调用): C:/Users/User/AppData/Local/Temp/pip-build-env-ujbspz4s/overlay/Lib/site-packages/cmake/data/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE) C:/Users/User/AppData/Local/Temp/pip-build-env-ujbspz4s/overlay/Lib/site-packages/cmake/data/share/cmake-3.28/Modules/FindBoost.cmake:2392 (find_package_handle_standard_args) CMakeLists.txt:22 (find_package)

我再次检查了一下,Python和NumPy都在.../boost_1_84_0/libs/python和.../boost_1_84_0/libs/python/src/numpy下的boost文件夹中

更改 CMake 文件不应该是答案,因为它是在 rw_noise git 存储库中给出的,并且是由更有能力的人制作的。

我可能忘记了我已经尝试过的东西,此时我只是非常迷失。 如果缺少某些内容或您需要更多信息,请随时询问!

任何帮助将不胜感激。

我见过有人收到类似的错误消息,但他们的修复都不起作用。

python c++ windows cmake boost
1个回答
0
投票

尽管如此,还是不令人满意。 我选择了 Linux,第一次尝试不到 3 分钟就成功了。

© www.soinside.com 2019 - 2024. All rights reserved.