Skip to content

kitech/qt.gen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

173 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 checkout -b for.qt.gen c0c124a5770d357908f16fa57e0aa0ec6ccd3f91
git clone github.com/kitech/qt.gen
patch -N -p 1 -i qt.gen/docs/outer.c0c124a5770d357908f16fa57e0aa0ec6ccd3f91.patch
cd qt.gen/
go build

* go1.11.x go1.10.x works fine

run

# for first run
# mkdir -p src/{core,gui,widgets,quick,qml,multimedia,network}
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封装函数

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

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors