Пост

Запукаем приложение написанное на C++/Qt в браузере

Не имея никакого опыта разработки фронтенда веб-приложений, хотя имею поверхностное представление об html/javascript/css, я столкнулся с такой штукой как webassembly и узнав, что приложение написанное на c++/qt/qml можно запустить в браузере решил, что эту технологию обязательно нужно попробовать оседлать.

Сборка

Тут вроде все довольно просто.

  • Качаем emscripten
  • Устанавливаем
    1
    2
    3
    
    $ ./emsdk install sdk-fastcomp-1.38.30-64bit
    $ ./emsdk activate --embedded sdk-fastcomp-1.38.30-64bit
    $ source emsdk_env.sh
    
  • Собираем наше приложение используя wasm qmake
    1
    2
    
    $ ~/.prog/Qt/5.14.2/wasm_32/bin/qmake ..
    $ make
    

Запуск

Для локального запуска можно воспользоваться утилитой emrun

1
$ emrun --no_browser --port 7373 SmartTap.html

Далее в браузере стучимся по адресу https::/localhost:7373/SmartTap.html

Для запуска приложения на сервере, или например на github pages достаточно вытянуть следующие файлы из сборочной директории и положить туда, откуда клиент сможет получить к ним доступ.

1
2
3
$ ls build_wasm/
SmartTap.wasm   qtloader.js    qtlogo.svg    
SmartTap.html   SmartTap.js

К примеру, мой тестовый проект валяется тут. Да, приложение дейсвительно запускается. Придется конечно немного подождать пока подгрузиться файл с расширением wasm, в моем случае он весит примерно 20 мегабайт.

Все ли так хорошо?

Нет, не все. Например, у меня (на момент написания поста) не работает звук, По всей видимости из-за отсутсвия поддержки qtmultimedia. Об ограничениях написано здесь

Авторский пост защищен лицензией CC BY 4.0 .