python - 有人可以解释 pybind11 安装吗?

标签 python c++ cmake pybind11

pybind11 文档总体上很好,但其中一个地方是解释安装过程以及使用 cmake 获取和运行示例的过程。

我已经设法弄清楚如何获取和构建示例。但这会导致更多的问题。几乎所有示例都依赖于将 pybind11 存储库下载到示例文件夹中,并在 cmake 运行中包含存储库的根文件夹(根文件夹包含一个 cmakelists.txt 文件)。该 repo 的内容与使用 pip 或 conda 安装 pybind11 时添加到 python 环境中的内容有很多共同之处。但是文件夹组织完全不同。

所以我很好奇:

  • 为什么有区别?
  • 有没有一种方法可以使用环境安装中的内容,而您也不必这样做
    下载 repo 以使用 cmake 构建示例?
  • 如果做不到这一点,将 pybind11 存储库放在一个公共(public)位置的最佳方法是什么,这样就不必为了构建示例而到处复制它,或者为了为自己的代码提供重要的附加 cmake 功能?

  • 总的来说,我真的很不舒服,不了解这些事情的“这是如何工作的”方面,所以这真的对我有帮助。

    最佳答案

    不确定您提到了哪些示例,但是要在您的系统中安装 pybind11 并在不同的项目中使用它,只需按照安装基于 CMake 的软件包的标准程序即可

    mkdir build
    cd build
    cmake ../  # optionally you can specify -DPYBIND11_PYTHON_VERSION=<your python version>
    make
    sudo make install
    

    然后在您的其他项目之一的 CMakeLists.txt你可以使用它,例如像这样:
    find_package(pybind11 CONFIG REQUIRED)
    message(STATUS "Found pybind11 v${pybind11_VERSION}: ${pybind11_INCLUDE_DIRS}")
    add_library(<name of your lib> MODULE <your sources>)
    target_link_libraries(mylib pybind11::module)
    

    更多 CMake 命令请咨询 pybind11Config.cmake .

    然后如果你不想在你的系统中安装它,你可以嵌入pybind11使用 add_subdirectory 在您的项目树中进行 repo而不是 find_package .所有提供的功能都是一样的。该包设计良好,它检测它是否用作主项目以及是否定义了安装目标。

    所以我猜你的最后两个问题得到了回答?

    关于python - 有人可以解释 pybind11 安装吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61196272/

    相关文章:

    python - RabbitMQ - 从同一主题读取的多个实例

    包含 header 时的 C++ OpenGL LNK2001

    python - 有没有办法提取字典的子集

    python - 如何使用 pandas 和 beautiful soup 来抓取多个网页地址上的表格?

    c++ - 为什么标准容器使用函数模板而不是非模板 Koenig 运算符

    c++ - Windows 设备属性文档?

    c++ - 带有 gtest(C++) 的 CMakeLists C 程序

    windows - cmake-gui 尝试打开但未显示 UI

    C - 编译器允许的语法无效?

    python - 在 jax vmap 函数中调试数组