C++ CMake 使用 Python3

C++ CMake 使用 Python3

CMakeListst 设置

# 如果使用的是非系统目录下的 Python 可以通过指定 Python3_ROOT_DIR 改变查找路径
# set(Python3_ROOT_DIR "${CMAKE_SOURCE_DIR}/venv")
find_package(Python3 COMPONENTS Interpreter Development REQUIRED)
add_executable(cpp-python-test main.cpp)
target_include_directories(${PROJECT_NAME} PRIVATE ${Python3_INCLUDE_DIRS})
target_link_libraries(${PROJECT_NAME} ${Python3_LIBRARIES})

测试代码

#include <Python.h>

int main(int, char **)
{
    Py_Initialize();
    PyRun_SimpleString("print('Hello World')");
    Py_Finalize();
    return 0;
}

FindPython3

找到 Python3 的解释器、编译器和开发环境(包括 include 的文件和库文件)

提供如下组件:

  • Interpreter:寻找 Python3 解释器
  • Compiler:寻找 Python3 编译器。仅使用 IronPython 时提供
  • Development:寻找开发环境套件(包含 include 目录和库文件)
  • NumPy:寻找 NumPy 的 include 目录

如果没有 COMPONENT 被指定,那么默认使用 Interpreter

为了确保所有组件 InterperterCompilerDevelopmentNumPy的版本一致,需要同时指定所有的组件,如下所示:

find_package(Python3 COMPONENTS Interpreter Development)

这个模块仅寻找 Python3 的版本。该模块可以和 FindPython2 同时使用,以便可以使用两个版本的 Python

同时如果 python 的版本对你并无大碍,可以使用 FindPython 模块

注意:如果 InterpreterDevelopment 组件都被指定的话,这个模块只会搜索 Cmake 配置的平台架构的解释器。如果仅指定了 Interpreter 组件的话,这个约束不会生效。

导入的目标

这个模块定义了如下几个导入目标(当 CMAKE_ROLE 为项目时)

名称说明
Python3::InterpreterPython3 解释器。如果找到 Interpreter 组件那么目标会被定义。
Python3::CompilerPython3 编译器。如果找到 Compiler 组件那么目标有定义。
Python3::PythonPython3 嵌入库。如果找到 Development 组件那么目标有定义。
Python3::ModulePython3 模块。如果找到 Development 组件那么目标有定义。
Python3::NumPyPython3 的 Numpy 组件。如果找到 NumPy 组件那么目标有定义。

结果变量

这个模块会在项目中定义下列的变量(可以查看标准变量命名)

名称说明
Python3_Found系统具有 Python3 需要的组件
Python3_Interpreter_Found系统具有 Python3 解释器
Python3_EXECUTABLEPython3 解释器的路径
Python3_INTERPRETER_ID解释器名称的唯一标识,可能是 PythonActivePythonAnacondaCanopyIronPython之一
Python3_STDLIB标准平台独立安装的目录。可以通过 distutils.sysconfig.get_python_lib(plat_specific=False, standard_lib=True) 获取信息
Python3_STDARCH标准平台依赖安装的目录。可以通过 distutils.sysconfig.get_python_lib(plat_specific=True,standard_lib=True) 获取信息
Python3_SOABI模块的扩展名后缀。可以通过 distutils.sysconfig.get_config_flag('SOABI')distutils.sysconfig.get_config_flag('EXT_SUFFIX')python3-config --extension-suffix 获取信息
Python3_Compiler_FOUND系统具有 Python3 编译器
Python3_COMPILERPython3 编译器的路径,只有使用 IronPython 时提供
Python3_COMPILER_ID编译器名称的唯一标识,可能是 IronPython
Python3_Development_FOUND系统具有 Python3 开发环境套件
Python3_INCLUDE_DIRSPython3 include 文件目录
Python3_LIBRARIESPython3 库文件
Python3_LIBRARY_DIRSPython3 库文件路径
Python3_RUNTIME_LIBRARY_DIRSPython3 运行时库文件路径
Python3_VERSIONPython3 版本
Python3_VERSION_MAJORPython3 主版本
Python3_VERSION_MINORPython3 此版本
Python3_VERSION_PATCHPython3 小版本
Python3_NumPy_FOUND系统具有 Numpy
Python3_NumPy_INCLUDE_DIRSNumPy include 文件目录
Python3_NumPy_VERSIONNumPy 版本

提示

用户可以通过修改如下变量的属性更改使用的 Python3 的属性,例如安装位置等

名称说明
Python3_ROOT_DIR定义 Python3 安装的根目录路径

参考文章

FindPython3
浅析 C++ 调用 Python 模块

  • 10
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
基于PHP微信小程序教务管理系统设计实现,吴国辰。 教务管理系统是为了方便学校管理学生信息、教务信息等而开发的系统。基于PHP微信小程序开发的教务管理系统具有以下特点和功能。 首先,系统具有学生信息管理功能。学生可以通过微信小程序登录系统,查看个人信息、课程信息、成绩等。学生可以方便地查看自己的课程安排、考试成绩,并可以及时与教务部门联系。 其次,系统具有教师信息管理功能。教师可以通过微信小程序登录系统,查看自己所教授的课程信息、学生信息等。教师可以方便地发布课程公告、作业等,与学生进行交流和互动。 另外,系统还具有课程管理功能。教务部门可以通过微信小程序管理课程信息,包括课程设置、添加教师、安排上课时间和地点等。学生和教师可以通过小程序查询课程信息,方便快捷地了解课程安排。 还有,系统具有考试成绩管理功能。教务部门可以通过微信小程序录入学生的考试成绩,学生和教师可以通过小程序查询自己的考试成绩。系统可以智能统计和分析学生的成绩情况,方便教务部门进行学生成绩的管理和评价。 此外,系统还可以实现其他教务管理相关的功能,如请假管理、选课管理、宿舍管理等。 综上所述,基于PHP微信小程序教务管理系统可以方便学校管理学生信息和教务信息,提高学生、教师和教务部门之间的沟通和交流效率。吴国辰的设计实现将着重于系统的稳定性、安全性和易用性,为用户提供便捷的教务管理服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值