在Visual Studio 2017中为PyBind11调试cmake_example


Visual Studio 2017:15.9.4
CMake:3.13.1
cmake_example:8818f49

什么是cmake_example

PyBind11的Hello World。可以与CMake包装在一起。

如何在Visual Studio中集成CMake?

不支持以混合模式(Python / C)进行调试。 cmake项目的混合模式调试

制备

  • Visual Studio安装程序中的

    • 安装32位Python。原因:"要使用C,您需要使用32位Python解释器(建议使用Python 3.6或更高版本)" 在我知道它之前,即使在64位中,我也能够调试混合模式。是。一起调试Python和C

    • 安装Python本机开发工具
  • 打开

    外壳并将路径传递给 32位 Python。示例:

1
set Path=C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_86;C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_86\Scripts;%Path%

程序

首先,从存储库中获取。然后从CMakeLists.txt生成sln / vcxproj文件。

1
2
3
git clone --recursive https://github.com/pybind/cmake_example.git
cd cmake_example
cmake -G "Visual Studio 15 2017" -A Win32 # 64ビットならx64

以下是Visual Studio 2017的GUI。

  • 打开

    cmake_example.sln并构建cmake_example项目。确保在Debug文件夹中有cmake_example.cp36-win32.pyd。

  • 将新项目(Python应用程序)添加到解决方案

    • 这是一个从python命中pyd的测试模块
    • 命名为python_test
  • python_test项目的属性中的

    • 32位版本指定为"解释器"
    • 选中"启用本机代码调试"
  • 在解决方案资源管理器的python_test项目中右键单击"搜索路径",然后使用"将文件夹添加到搜索路径"添加一个Debug文件夹。

  • 编写python_test.py的内容

  • python_test.py

    1
    2
    3
    4
    import sys
    print(sys.path)
    import cmake_example
    assert cmake_example.add(1,2) == 3

    运行

    python_test.py。如果import cmake_example搞砸了,请确保sys.path转到Debug文件夹。
    在main.cpp中设置一个断点,然后运行它以查看该断点是否有效。

    参考

    为Python创建C扩展
    cmake生成器