使用pybind11运用visual studio中的CMake编译C++生成.pyd

简单的例子

在过去的几个版本中,CMake 与 Visual Studio 的集成度越来越高。用vs安装了c++后,cmake也会安装。
可以在与c++解决方案内新建cmake项目,会自动生成CMakeLists.txt,CMakePresets.json和out/build文件夹。当打开包含 CMakeLists.txt 文件的文件夹时,即右键点击文件夹,然后用visual studio打开,可以打开cmake项目,右键CMakeLists.txt点击生成选项即可。
下面就是CMakeList.txt内容,里面每一句都是必要的

# CMakeList.txt: adds 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.8)

project ("adds")
include_directories("C:\\ProgramData\\Anaconda3\\include")
include_directories("C:\\ProgramData\\Anaconda3\\lib\\site-packages\\pybind11\\include" )    # include  pybind11 和  python的头文件
link_directories("C:\\ProgramData\\Anaconda3\\libs")
add_library(adds SHARED adds.cpp)    # 生成动态库(共享库)共享库则只有一个副本
#(adds是库的名字),这条命令告诉cmake,我们想把adds.cpp编译成一个叫作“adds”的库。
set_target_properties(adds PROPERTIES SUFFIX ".pyd")

target_link_libraries(adds)    # 链接 python.lib 库,pyd程序就能顺利使用
# adds库中的代码了

使用pybind11运用visual studio中的CMake编译C++生成.pyd_第1张图片
c++文件

#include 

namespace py = pybind11;

int add(int i, int j) {
    return i + j;
}

PYBIND11_MODULE(adds, m) {
    m.def("add", &add, "A function that adds two numbers");
}

使用pybind11运用visual studio中的CMake编译C++生成.pyd_第2张图片

这里面示例的是一个简单的cpp文件,class和多个文件见下面

多个文件

当有多个文件需要包括在同一个PYBIND11_MODULE的cpp文件里面时,仅需对该cpp文件# include "used.h"头文件即可,如果used.cpp里面有用到namespace,那么只需要在PYBIND11_MODULE的cpp文件中 using namespace xx;即可

你可能感兴趣的:(vs,c++,visual,studio,windows)