当前位置: 首页 > news >正文

网站设计网站建设网站制作页面设计的内容

网站设计网站建设网站制作,页面设计的内容,建筑设计参考网站,广告设计专业周记CMake:检测python解释器和python库 导言检测python解释器CMakeLists.txt输出附录 检测python库项目结构CMakeLists.txt相关源码附录 导言 python是一种非常流行的语言。许多项目用python编写的工具#xff0c;从而将主程序和库打包在一起#xff0c;或者在配置或构建过程中使… CMake:检测python解释器和python库 导言检测python解释器CMakeLists.txt输出附录 检测python库项目结构CMakeLists.txt相关源码附录 导言 python是一种非常流行的语言。许多项目用python编写的工具从而将主程序和库打包在一起或者在配置或构建过程中使用python脚本。这种情况下确保运行时对python解释器的依赖也需要得到满足。本篇将展示如何检测和使用python解释器。 除此之外还有其他方法可以将解释语言(如python)与编译语言(如C或C)组合在一起使用。一种是扩展python通过编译成共享库的C或C模块在这些类型上提供新类型和新功能。另一种是将python解释器嵌入到C或C程序中。两种方法都需要下列条件: python解释器的工作版本python头文件python.h的可用性python运行时库libpython 检测python解释器 项目地址 https://gitee.com/jiangli01/tutorials/tree/master/cmake-tutorial/chapter3/01 CMakeLists.txt find_package(PythonInterp REQUIRED)使用find_package命令找到python解释器。 find_package是用于发现和设置包的CMake模块的命令。这些模块包含CMake命令用于标识系统标准位置中的包。CMake模块文件称为Findname.cmake当调用find_package(name)时模块中的命令将会运行。 除了在系统上实际查找包模块之外查找模块还会设置了一些有用的变量反映实际找到了什么也可以在自己的CMakeLists.txt中使用这些变量。对于python解释器相关模块为FindPythonInterp.cmake附带的设置了一些CMake变量: PYTHONINTERP_FOUND是否找到解释器PYTHON_EXECUTABLEpython解释器到可执行文件的路径PYTHON_VERSION_STRINGpython解释器的完整版本信息PYTHON_VERSION_MAJORpython解释器的主要版本号PYTHON_VERSION_MINOR python解释器的次要版本号PYTHON_VERSION_PATCHpython解释器的补丁版本号 可以强制CMake查找特定版本的包。例如要求python解释器的版本大于或等于2.7find_package(PythonInterp 2.7)。 CMake有很多查找软件包的模块。建议在CMake在线文档中查询Findpackage.cmake模块并在使用它们之前详细阅读它们的文档。find_package命令的文档可以参考 : https://cmake.org/cmake/help/v3.5/command/find_ackage.html execute_process(COMMAND${PYTHON_EXECUTABLE} -c print(Hello, world!)RESULT_VARIABLE _statusOUTPUT_VARIABLE _hello_worldERROR_QUIETOUTPUT_STRIP_TRAILING_WHITESPACE)执行python命令并捕获它的输出和返回值。 输出 -- Found PythonInterp: /usr/bin/python3.8 (found version 3.8.10) -- RESULT_VARIABLE is: 0 -- OUTPUT_VARIABLE is: Hello, python interpreter! -- Configuring done -- Generating done -- Build files have been written to: /home/jiangli/repo/tutorials/cmake-tutorial/chapter3/01/build附录 软件包没有安装在标准位置时CMake无法正确定位它们。用户可以使用-D参数传递相应的选项告诉CMake查看特定的位置。python解释器可以使用以下配置: $ cmake -D PYTHON_EXECUTABLE/custom/location/python ..这将指定非标准/custom/location/python安装目录中的python可执行文件。 注意:每个包都是不同的Findpackage.cmake模块试图提供统一的检测接口。当CMake无法找到模块包时可以阅读相应检测模块的文档以了解如何正确地使用CMake模块。可以在终端中直接浏览文档可使用cmake --help-module FindPythonInterp查看。 除了检测包之外我们还想提到一个便于打印变量的helper模块: message(STATUS RESULT_VARIABLE is: ${_status}) message(STATUS OUTPUT_VARIABLE is: ${_hello_world})使用以下工具进行调试: include(CMakePrintHelpers) cmake_print_variables(_status _hello_world)将产生以下输出: -- _status0 ; _hello_worldHello, world!检测python库 项目结构 . ├── CMakeLists.txt └── hello_embedded_python.c项目地址 https://gitee.com/jiangli01/tutorials/tree/master/cmake-tutorial/chapter3/02 CMakeLists.txt 为了确保可执行文件、头文件和库都有一个匹配的版本。这对于不同版本可能在运行时导致崩溃。通过FindPythonInterp.cmake中定义的PYTHON_VERSION_MAJOR和PYTHON_VERSION_MINOR来实现: find_package(PythonInterp REQUIRED) find_package(PythonLibs ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} EXACT REQUIRED)可执行文件包含python.h头文件。因此这个目标的include目录必须包含python的include目录可以通过PYTHON_INCLUDE_DIRS变量进行指定: target_include_directories(hello_embedded_pythonPRIVATE ${PYTHON_INCLUDE_DIRS} )将可执行文件链接到python库通过PYTHON_LIBRARIES变量访问: target_link_libraries(hello_embedded_pythonPRIVATE ${PYTHON_LIBRARIES} )相关源码 此代码将在程序中初始化python解释器的实例并使用python的print函数打印字符串。 附录 当python不在标准安装目录中如何确定python头文件和库的位置是正确的 对于python解释器可以通过-D选项传递PYTHON_LIBRARY和PYTHON_INCLUDE_DIR选项来强制CMake查找特定的目录。这些选项指定了以下内容: PYTHON_LIBRARY指向python库的路径PYTHON_INCLUDE_DIRpython.h所在的路径 这样就能获得所需的python版本。 注意有时需要将-D PYTHON_EXECUTABLE、-D PYTHON_LIBRARY和-D PYTHON_INCLUDE_DIR传递给CMake CLI以便找到及定位相应的版本的组件。 要将python解释器及其开发组件匹配为完全相同的版本可能非常困难对于那些将它们安装在非标准位置或系统上安装了多个版本的情况尤其如此。CMake 3.12版本中增加了新的python检测模块来解决这个问题。CMakeLists.txt的检测部分也将简化为: find_package(Python COMPONENTS Interpreter Development REQUIRED)最后用积极的态度面对生活正面面对生活中的任何人、事
http://wiki.neutronadmin.com/news/182472/

相关文章:

  • 成都网站建设 网络公司重庆教育建设集团有限公司官方网站
  • 网站后台浏览器WordPress开启me
  • 域名备案网站负责人wordpress是什么开发的
  • 网站开发的层次北京app建设
  • 网站调研方法有哪些内容加拿大服务器做网站
  • 网站数据怎么更新嵌入式网站开发
  • 县网站建设黑龙江跃众品牌策划公司
  • 建个企业网站对公司宣传有用吗网站建设 选中企动力
  • 专业的建网站的公司杭州网站制作工作室
  • 聊城高新区建设局网站在线做简单的网站吗
  • 旅游网站开发设计报告书qq注册账号免费申请
  • 建设建设网站的开封小吃网站建设
  • 拍卖网站模板做团购网站需要什么
  • 做房地产网站海淀建设网站
  • 做微博这样的网站营业执照办好了就可以做网站了吗
  • 广州朝阳网站建设泰安网络推广公司推荐
  • 网站怎么做微信送红包活动高端 网站建设
  • 找个男做那个视频网站好网站导航优化
  • 网站 续费网站建设主要工作内容
  • 南宁网站制作费用深圳网络推广服务是什么
  • 三门峡建设环境局网站什么网站可以做调察问卷
  • wordpress建外贸网站北京个人网站备案
  • 福建亨立建设集团有限公司网站怎么开发一个微信商城
  • 定制化网站一般价格绍兴seo推广公司
  • 沭阳网站设计中国石油大学网页设计与网站建设
  • 泊头市网站建设网站的功能
  • 廉江手机网站建设公司济南万速网站建设
  • 服务号不认证可做微网站吗深圳网站建设icxun
  • 网站建设的因素网站的优点和缺点
  • 天河区门户网站教育局板块郑州同济医院收费高吗