【问题标题】:How to make cmake find pybind11如何让cmake找到pybind11
【发布时间】:2020-11-25 00:06:26
【问题描述】:

我正在尝试遵循在this 页面上找到的使用 pybind11 在 c++ 中嵌入 python 的简单示例。但是,当尝试使用 cmake 构建解决方案时,我不断收到一个错误提示

通过在 CMAKE_MODULE_PATH 中未提供“Findpybind11.cmake”,该项目已要求 CMake 查找包配置文件 由“pybind11”提供,但 CMake 没有找到。

找不到“pybind11”提供的包配置文件 具有以下任何名称:

pybind11Config.cmake
pybind11-config.cmake

我的桌面上有一个名为 pybindtest 的文件夹,其中包括上面链接中描述的 CMakeLists.txt 和 main.cpp,以及我创建的构建文件夹。在构建文件夹中,我尝试了以下几行无济于事(在 Powershell 7 上运行):

cmake ..
cmake .. -Dpybind11_DIR=C:/Users/ben.wolfley/Anaconda3/Library/share/cmake/pybind11/pybind11Config.cmake
cmake .. -DCMAKE_MODULE_PATH=C:/Users/ben.wolfley/Anaconda3/Library/share/cmake/pybind11

我使用conda install pybind11安装了pybind11,而pybind11Config.cmake在C:\Users\ben.wolfley\Anaconda3\Library\share\cmake\pybind11

【问题讨论】:

  • 如果你尝试使用 cmakegui,应该有一个名为 pybind11_DIR 的变量。您可以尝试将其设置为 *.cmake 目录并重试吗?
  • 或者我认为你应该设置 CMAKE_PREFIX_PATH 而不是 CMAKE_MODULE_PATH
  • "... 并且 pybind11Config.cmake 位于 C:\Users\ben.wolfley\Anaconda3\Library\share\cmake\pybind11" - 所以将 pybind11_DIR 变量设置为该 directory,如错误消息所示(而不是 file,按照您当前的设置)。

标签: c++ powershell cmake pybind11 python-embedding


【解决方案1】:

感谢Tsyvarev 为我指明了正确的方向。以下命令有效:

cmake .. -G "Visual Studio 15 2017" -A x64 `
      -Dpybind11_DIR=C:/Users/ben.wolfley/Anaconda3/Library/share/cmake/pybind11/

我指向的是 .cmake 文件而不是文件的目录。我还必须指定编译器才能使代码正常工作。

【讨论】:

    【解决方案2】:

    将以下内容添加到 CMakeLists.txt:

    ```cmake
    # set pybind11 dir
    set(pybind11_DIR /Users/Caleb/Softwares/pybind11)
    find_package(pybind11 REQUIRED)
    ```
    

    【讨论】:

      【解决方案3】:

      如果有人在没有 Anaconda 的情况下遇到同样的问题,比如直接使用 pip pybind11 或手动克隆安装,在我的情况下两者都会导致问题。使用git手动安装pybind11并没有安装cmake配置pybind11Config.cmake,虽然有一个tools/pybind11Config.cmake.in文件,但我无法变成正确的pybind11Config.cmake

      Installation pybind11 global with pip 帮我解决了,自动卸载了手动安装的git:

      pip install "pybind11[global]"
      

      它安装了 pybind11pybind11-global 并像 Anaconda 一样使用适当的 cmake 配置。

      【讨论】:

        猜你喜欢
        • 2013-11-27
        • 1970-01-01
        • 2017-06-12
        • 1970-01-01
        • 2011-03-02
        • 2016-02-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多