kitech / qt.gen

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Yet another qt for go/golang binding with FFI/libffi.

speedup compile time and save compile memory usage.

build

cd @GOPATH/github.com/therecipe/qt
git clone github.com/kitech/qt.gen
cd qt.gen/
go build

run

QTDIR=$HOME/Qt5.9.1/ ./qt.gen c 2>&1|tee gen.log

Sometimes need ulimit -n 10240

supported binding languages

  • C
  • golang
  • rust
  • ruby
  • nim
  • vlang

lang 参数说明

  • c 为所有Qt函数生成一个对应的封装函数,做参数返回值的简化,以便纯C语言中调用
  • c0 只生成Qt的内联函数/方法的符号生成,不做封装,减小包大小
  • ch 生成Qt所有函数/方法的C原型头文件,不需要C++编译器
  • go 为所有Qt函数生成一个对应的Go封装函数
  • gov2 为clipqt(Qt子集)中的函数/方法生成对应的Go封装,减小包大小

C symbol 生成的是所有能够支持的Qt函数,而不是Qt子集

TODOs

  • QString arguments as string
  • QString record/reference auto destroy
  • interface type for arguments passby
  • generate skipped class/method/function, but comment it.
  • default value process
  • 用c封装所有的函数,再用ffi调用
  • #define to const
  • global variable 全局变量获取
  • 有些类不需要生成代理类

go-clang TODO

  • 无法检查方法delete属性
  • 无法检查方法depcreated属性
  • 参数default value 的获取
  • ifdef/ifndef块的检测咋用
  • sret 检测
  • RECORD参数unpack直传 检测
  • RECORD返回值unpack直传 检测
  • class是否抽像
  • 获取comment
  • isFunctionType/isFunctionPointerType/isMemberFunctionPointerType
  • isTemplateType
  • MSVC always passes 'sret' after 'this', unlike GCC
  • 获取虚方法在vtable中的偏移
    • libclang实现
    • 运行时实现 , qtrt/mthook3.c
  • 是否有 complete dtor: _ZN5QRectD2Ev

depends

About


Languages

Language:Go 77.6%Language:C++ 21.0%Language:Shell 1.2%Language:CMake 0.1%Language:Makefile 0.1%Language:C 0.0%