python html5 bootstrap 视频教程

德云社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5472|回复: 0

Shiboken - 基于 Qt/C++ GUI 库绑定代码的 CPython 生成器前端插件

[复制链接]

192

主题

306

帖子

1352

积分

超级版主

Rank: 8Rank: 8

金钱
812
金币
15
威望
0
贡献
0
发表于 2019-3-1 00:00:00 | 显示全部楼层 |阅读模式
Shiboken - 基于 Qt/C++ GUI 库绑定代码的 CPython 生成器前端插件

Shiboken 是一个 Generator Runner 前端插件,它使用 CPython 源代码为 C++ 库生成绑定。


Generator Runner 是为便于 C++ 和 Qt 库开发语言绑定而创建的一个工具。它提供了一个框架,使得这个过程能最大可能自动化:使用 ApiExtractor 提取 C++ 头文件中的信息,通过相应前端 (用户可以自己提供) 生成某种目标语言绑定。


Generator Runner 本身比较简单,它的工作都是通过 API Extractor 和 前端 (比如 Shiboken) 来完成的。


快速高效 智能编辑 重构 批处理 "数字化 Python IDE" 集成开发环境

http://dt.digitser.cn/zh-CN/ide/idepy/index.html


Generator Runner 定义了一个前端接口类  class Generator;每个前端插件 (比如 Shiboken) 只需要提供了一个函数 void getGenerators(GeneratorList* list)来返回包含 Generator 的一个链表 (QLinkedList);在调用 Generator Runner 时,通过 generatorrunner --generator-set=shiboken 命令行指定使用哪一个前端。


当编译或安装 Shiboken 时,我们会注意到和 shiboken 名字相关的有 3 个文件:shiboken_generator(.dll/.so/...) 是插件 (前端);shiboken-python*(.dll/.so/...) 是最终生成代码运行需依赖的;shiboken(.exe) 是壳文件,就是 generatorrunner --generator-set=shiboken。


在命令行 --generator-set,我们可指定 Shiboken 插件完整路径。如果不是完整路径,generatorrunner 会先合成文件名 (shiboken_generator.dll),再搜索编译时指定插件目录、QCoreApplication::libraryPaths() 返回路径。


0_1304399072jZT9.gif.png

要想为 C++ 库生成绑定,需 API Extractor 从 C++ 库头文件中提取信息,通过 typesystem 文件控制提取 (修改、重命名) 哪些信息。


信息提取后,理论上就可为各种高层语言提供绑定 (只要有相应的前端存在)。shiboken 为 CPython 生成绑定,DocGenerator 为要绑定的库生成文档。



扫一扫关注 "德云社区" 微信公众号

版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载。
AI人工智能 语音助理 人工翻译 教程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|Sitemap|小黑屋|德云社区 |网站地图  

GMT+8, 2021-4-22 23:04 , Processed in 0.045609 second(s), 33 queries .

工业和信息化部: 粤ICP备14079481号-2

技术支持 乐数软件     版权所有 © 2014-2021 德云社区    

快速回复 返回顶部 返回列表