Skip to content

Latest commit

 

History

History
116 lines (89 loc) · 5.71 KB

Status.md

File metadata and controls

116 lines (89 loc) · 5.71 KB

Researching previous work

State of current Perl Qt5 bindings

  • The code in hakonhagland/perlqt repository which is direct fork of the qt5 branch in chrisburel/perlqt does not currently build, see this issue.

  • First thing it needs in order to build is the smokegen binary. I am able to build smokegen using the version in commonqt/smokegen, see below for more information.

  • Using the above smokegen when building hakonhagland/perlqt gives error "Could not find Smoke QtCore", see build log here.

  • It appears that we first need to build something called smokeqt. The original version of smokeqt in crisburel/smokeqt depends on chrisburel/smokegen, and the latter does not compile.

  • So I think we first need to try compile the version of smokeqt in commonqt/smokeqt which depends on commonqt/smokegen. The latter does now compile, see below.

  • More information about command line usage of the smokegen binary can be found here

  • However, trying to build commonqt/smokeqt fails with 'windows.h' file not found, see build log here

  • After advice from @luismbo, see this issue I tried to patch smokegen to not add the windows.h header when compiling on Linux, see this commit.

  • Recompiling smokegen with the latter change, and then trying to rebuild commonqt/smokeqt with that version of smokegen now give a segmentation fault, see build log here.

  • Running the above crashing smokegen call with gdb reveal some more information.

State of smokegen binary

  • The code in chrisburel/perlqt seems to depend on (see this issue) SMOKE binding generated by chrisburel/smokegen. The latter seems to be abandoned September 2019 and the code currently does not compile on Ubuntu, see compile log here. It looks like it was trying to use Clang tooling libraries to port SMOKE bindings from Qt4 to Qt5, but maybe it became too involved, or something else stopped the development? There are signs (see below) that most language bindings to Qt are having trouble with SMOKE and Qt5 and they are trying to find alternative solutions.

  • However, commonqt/smokegen which is a fork and further development of chrisburel/smokegen seems to have been able to port smokegen to Qt5 for Common Lisp's CommonQt5. See also mcristg/smokegen, CommonQt and Shinmera/qtools

  • I am currently able to build smokegen in commonqt/smokegen, see this pull request, this issue and this page for building the prerequisites.

More information about CommonQt

In the future, CommonQt will use its own system to hook into Qt and drop Smoke support. When that time comes, this project will hopefully become obsolete. However, for the time being, Smoke is a necessary evil, and as such, this library hopes to make things a bit easier.

  • There is a currently an effort going on to build Shinmera/qt-libs with Qt5, see this issue. More information about qt-libs can be found here.

About SMOKE (it seems it does not support Qt5)

clang tooling (used by smokegen)