C++ clion使用python

Clion+Win10+cmake使用python

  • clion 配置使用python
    • 引入python模块
    • 测试c++中运行python
    • FindPython3中的变量
    • 修改Python的路径

clion 配置使用python

引入python模块

cmake 默认提供了一些内置的模块,输入

cmake --help-module-list

可以查看内置支持的模块。

find_package(Python3 3.7 COMPONENTS Interpreter Development)
if (Python3_FOUND)
    message("Python include directory: " ${
     Python3_INCLUDE_DIRS})
    message("Python version is: " ${
     Python3_VERSION})
    include_directories(${
     Python3_INCLUDE_DIRS})
    target_link_libraries(main ${
     Python3_LIBRARIES})
endif (Python3_FOUND)

注意: find_package中一定要加入COMPONENTS Development才能在项目中引入Python.h文件。

测试c++中运行python

#include 
#include 

int main(int argc, char** argv) {
     
	Py_Initialize();
	if (!Py_IsInitialized()) {
     
	    std::cout << "init failed" << std::endl;
	    return 0;
	}
}

FindPython3中的变量

当使用find_package(Python3)时,如果找到。那么cmake会提供以下几个定义好的变量。

变量名 变量说明
Python3_FOUND 判断系统中是否存在Python3
Python3_Interpreter_FOUND 判断系统中是否存在Python3的解释器
Python3_EXECUTABLE Python3解释器的文件路径
Python3_INTERPRETER_ID 提供解释器的类型ID(Python,Anaconda, ActivePython,Canopy,IronPython)
Python3_STDLIB 标准平台独立的安装目录。
Python3_STDARCH 依赖于标准平台的安装目录
Python3_SITELIB 第三方平台独立安装目录
Python3_SITEARCH 第三方平台相关的安装目录
Python3_Compiler_FOUND 判断系统中是否含有Python3编译器
Python3_COMPILER Python3编译器的路径。只用IronPython提供这个路径
Python3_COMPILER_ID 提供解释器的类型ID(IronPython)
Python3_Development_FOUND Python3的开发套件
Python3_INCLUDE_DIRS Python3的头文件的文件夹路径
Python3_LIBRARIES Python3使用的库文件
Python3_LIBRARY_DIRS Python3库文件的路径
Python3_RUNTIME_LIBRARY_DIRS Python3动态库的路径
Python3_VERSION Python3的版本
Python3_VERSION_MAJOR Python主版本,使用python3即是3,使用python2即为2
Python3_VERSION_MINOR Python3次版本
Python3_VERSION_PATCH python3小版本

修改Python的路径

一般情况下我们会使用conda创建虚拟环境作为我们python的开发环境,所以有的时候我们需要调用的是虚拟环境下python的路径。例如我们可以通过python安装opencv,并通过Cmake找到python下的opencvC++库使用。此时我们可以是用Python3_ROOT_DIR改变找到的python路径来使用虚拟环境下的python

set(Python3_ROOT_DIR C:/ProgramData/Miniconda3/envs/socket)
find_package(Python3 3.7 COMPONENTS Interpreter Development)
if (Python3_FOUND)
    message("Python include directory: " ${
     Python3_INCLUDE_DIRS})
    message("Python version is: " ${
     Python3_VERSION})
    include_directories(${
     Python3_INCLUDE_DIRS})
    target_link_libraries(main ${
     Python3_LIBRARIES})
endif (Python3_FOUND)

显示
在这里插入图片描述

你可能感兴趣的:(C++)