Yet another qt for go/golang binding with FFI/libffi.
speedup compile time and save compile memory usage.
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
# 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
- C
- golang
- rust
- ruby
- nim
- vlang
- c 为所有Qt函数生成一个对应的封装函数,做参数返回值的简化,以便纯C语言中调用
- c0 只生成Qt的内联函数/方法的符号生成,不做封装,减小包大小
- ch 生成Qt所有函数/方法的C原型头文件,不需要C++编译器
- go 为所有Qt函数生成一个对应的Go封装函数
C symbol 生成的是所有能够支持的Qt函数,而不是Qt子集
- 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 全局变量获取
- 有些类不需要生成代理类
- 无法检查方法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
- therecipe/qt@c0c124a5770d357908f16fa57e0aa0ec6ccd3f91
- extended go-clang https://github.com/kitech/go-clang-v3.9
- go1.11.x go1.10.x