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

长春专业做网站公司百度sem竞价托管

长春专业做网站公司,百度sem竞价托管,丰台做网站公司,网站建设实践课程报告CMake:检测python模块和包 导言项目结构CMakeLists.txt相关源码 导言 上一篇,我们基本了解了如何去检测python的解释器和python库。通常,代码是依赖于特定的python模块,无论是python工具、嵌入python的程序,还是扩展python的库。…

CMake:检测python模块和包

  • 导言
  • 项目结构
  • CMakeLists.txt
  • 相关源码

导言

上一篇,我们基本了解了如何去检测python的解释器和python库。通常,代码是依赖于特定的python模块,无论是python工具、嵌入python的程序,还是扩展python的库。例如,numpy包。依赖于python模块或包的项目中,确定满足对这些python模块的依赖非常重要。

项目结构

.
├── CMakeLists.txt
├── py3_pure_embedding.cpp
└── use_numpy.py

项目地址:

https://gitee.com/jiangli01/tutorials/tree/master/cmake-tutorial/chapter3/03

CMakeLists.txt

在这里插入图片描述

execute_process(COMMAND ${PYTHON_EXECUTABLE} "-c" "import re, numpy; print(re.compile('/__init__.py.*').sub('',numpy.__file__))"RESULT_VARIABLE numpy_statusOUTPUT_VARIABLE numpy_locationERROR_QUIETOUTPUT_STRIP_TRAILING_WHITESPACE
)

使用了CMakeexecute_process函数来运行一个python脚本。该脚本导入了renumpy模块,然后使用re.compile函数来替换numpy模块路径中的一个模式。RESULT_VARIABLE用于捕获python脚本执行的状态,而OUTPUT_VARIABLE用于捕获修改后的numpy模块文件的位置。通过使用ERROR_QUIET来抑制进程生成的任何错误,并且使用OUTPUT_STRIP_TRAILING_WHITESPACE来移除输出中的尾随空格。

if(NOT numpy_status)set(NumPy ${numpy_location} CACHE STRING "Location of NumPy")
endif()

如果numpy_status不为空,那么设置了一个名为NumPy的CMake缓存变量,其值为numpy_location,这个变量用于存储NumPy库的位置信息。这个操作允许在CMake配置过程中指定NumPy的位置,以便后续的构建过程可以使用它。如果numpy_status为空,则不进行任何操作。

execute_process(COMMAND ${PYTHON_EXECUTABLE} "-c" "import numpy; print(numpy.__version__)"OUTPUT_VARIABLE numpy_versionERROR_QUIETOUTPUT_STRIP_TRAILING_WHITESPACE
)

这段代码使用execute_process命令来执行一个python脚本。

  • ${PYTHON_EXECUTABLE} 是一个CMake变量,用于指定python可执行文件的路径。
  • -c 选项告诉python解释器后面紧跟着的字符串是要执行的python代码。
  • 在这个python代码中,首先导入了numpy库,然后使用print函数输出了numpy库的版本号。
  • OUTPUT_VARIABLE 选项用于捕获python代码的输出,即numpy库的版本号。
  • ERROR_QUIET 选项用于忽略可能的错误信息。
  • OUTPUT_STRIP_TRAILING_WHITESPACE 选项用于移除输出字符串末尾的空格。

通过这个操作,可以在CMake配置过程中获取并保存numpy库的版本号,以便后续的构建过程可以使用。

add_custom_command(OUTPUT${CMAKE_CURRENT_BINARY_DIR}/use_numpy.pyCOMMAND${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/use_numpy.py${CMAKE_CURRENT_BINARY_DIR}/use_numpy.pyDEPENDS${CMAKE_CURRENT_SOURCE_DIR}/use_numpy.py
)

使用 CMake 中的 add_custom_command 命令,用于定义自定义的构建步骤,以及生成相应的输出文件。

  • OUTPUT 指定了生成的输出文件,这里是 ${CMAKE_CURRENT_BINARY_DIR}/use_numpy.py
  • COMMAND 指定了生成输出文件所需要执行的命令,这里是将 ${CMAKE_CURRENT_SOURCE_DIR}/use_numpy.py 复制到 ${CMAKE_CURRENT_BINARY_DIR}/use_numpy.py
  • DEPENDS 列出了生成输出文件所依赖的文件,这里是 ${CMAKE_CURRENT_SOURCE_DIR}/use_numpy.py

这段代码的作用是在构建过程中,如果 ${CMAKE_CURRENT_SOURCE_DIR}/use_numpy.py 发生变化,就执行指定的命令来将该文件复制到构建目录 ${CMAKE_CURRENT_BINARY_DIR} 下的相同路径。这可以确保在构建过程中,始终使用最新的 use_numpy.py 文件。

target_sources(pure-embeddingPRIVATE ${CMAKE_CURRENT_BINARY_DIR}/use_numpy.py
)

CMake 的构建过程中为名为 pure-embedding 的目标(通常是一个可执行文件或库)指定了源文件。在这里,并没有直接添加 C++ 源代码,而是添加了一个 python 脚本文件 ${CMAKE_CURRENT_BINARY_DIR}/use_numpy.py

这意味着在构建 pure-embedding 目标时,CMake 会将 ${CMAKE_CURRENT_BINARY_DIR}/use_numpy.py 视为目标的源文件之一,并确保在构建过程中该文件已经生成。

相关源码

py3_pure_embedding.cpp
在这里插入图片描述
use_numpy.py
在这里插入图片描述
最后:希望大家都勇于向邪恶势力作斗争!!!

http://www.yidumall.com/news/76262.html

相关文章:

  • 网站博客模板深圳做推广哪家比较好
  • 网站备案行业打开百度搜索网站
  • 在国际网站做外贸需要条件高端网站建设哪个好
  • 优秀网站建设空间如何做企业产品推广
  • 可以免费做网站推广的平台新浪nba最新消息
  • 上海门户网站制windows优化大师电脑版
  • 东莞网站优化如何哪家竞价托管专业
  • 个人可以做医疗信息网站吗友情链接交易
  • wordpress 登录界面插件seo云优化方法
  • 网站打开403培训机构招生方案
  • 网站开发 前端修改泰州seo推广公司
  • 网站备案 公安局网站查询访问
  • 有没有教给做宝宝衣服的网站全网营销方案
  • 南山做网站教程宁波seo推荐推广平台
  • 网站换代理分享几个x站好用的关键词
  • 根据一个网站仿做新网站是什么网站搜索引擎排名2020
  • 网站样式用什么做的百度网页入口官网
  • 专门做视频点评的网站长清区seo网络优化软件
  • 网站是专门对生活中的一些所谓常识做辟谣的国内重大新闻十条
  • 网站制作高端网站建设免费留电话的广告
  • 沈阳专业网站制作团队国外b站浏览器
  • 有哪些做婚礼平面设计的网站有哪些百度seo规则最新
  • 网站制作2007免费网站建设哪个好
  • 深圳建设局网站注册结构师培训拓客最有效方案
  • 上海icp新增网站推广普通话奋进新征程
  • wordpress做社交网站吗今日要闻10条
  • 东莞建设质监网站广州网站优化推广
  • 哪个网站能学做微商宁波seo推广优化哪家强
  • 什么颜色做网站显的大气深圳抖音推广
  • 海阳网站建设网页分析工具