Запукаем приложение написанное на 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. Об ограничениях написано здесь