smokegen is the binding-generator component of the SMOKE toolkit (version 3). It parses Qt C++ headers using LLVM/Clang and emits the SMOKE data tables consumed by smokeqt and language bindings (e.g. CommonQt).
Qt 6 is required; Qt 5 is not supported.
- CMake 3.22 or later
- LLVM/Clang (matching versions; tested with LLVM 19)
- Qt 6.11
- A C++17-capable compiler (GCC, Clang, or MSVC)
mkdir build && cd build
cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/path/to/install -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDLL -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl -DSMOKE_QT_VERSION=6 -DQt6_DIR=/path/to/qt6 -DLLVM_DIR=/path/to/llvm/lib/cmake/llvm ..\smokegen
ninja -j 6
ninja install
On Windows, run the cmake commands from an x64 Native Tools Command Prompt. The Visual Studio generator can be used instead of Ninja if preferred, but Ninja is recommended for faster incremental builds.
After installing smokegen, the smokeqt CMake build will invoke the smokegen executable automatically when generating the SmokeQt binding tables from the Qt headers.