文章目录
- 一 通过Visual Studio生成
- 二 通过CMake生成
一 通过Visual Studio生成
在我之前的一篇文章pybind11学习 | VS2022下安装配置中,描述了如何通过配置VS2022实现pybind11项目构建和编译成Python拓展模块。
二 通过CMake生成
项目结构如下:
其中pybind11文件夹为从github上克隆的pybind11源码。
CMakeLists.txt
cmake_minimum_required(VERSION 3.4)
project(example)
add_subdirectory(pybind11)
pybind11_add_module(example example.cpp)
pybind11_add_module
是pybind11提供的一个CMake函数,用于简化pybind11项目的生成Python拓展模块的流程。pybind11_add_module
语法如下:
pybind11_add_module(<name> [MODULE | SHARED] [EXCLUDE_FROM_ALL]
[NO_EXTRAS] [THIN_LTO] [OPT_SIZE] source1 [source2 ...])
在项目源文件目录下,打开windows终端,执行下面命令:
mkdir build
cd build
cmake ..
在cmake构建系统命令打印的结果中有下面一段:
-- Found PythonInterp: D:/anaconda3/envs/Mx_yolov3/python.exe (found suitable version "3.7.10", minimum required is "3.6")
-- Found PythonLibs: D:/anaconda3/envs/Mx_yolov3/libs/python37.lib
其中PythonInterp
和PythonLibs
是pybind11自动寻找的,前提是已经在系统环境变量中添加了Python路径。生成的build
文件夹目录如下:
其中将example.sln
通过VS打开,在VS中生成解决方案即可生成pyd
文件。
当然,我们也可以直接通过在终端中输入如下命令,直接生成pyd文件。
mkdir build
cd build
cmake ..
cmake --build .