Как настроить Qt для WebAssembly?

258
11 сентября 2021, 05:20

Первым пунктом новости о выходе Qt 5.13 является объявление стабильного выпуска Qt for WebAssembly - поддержка исполнения Qt приложений в современных браузерах.

Qt for WebAssembly lets you build Qt applications for web browsers and is now fully supported.

Однако, я не вижу нужный мне kit в MaintenanceTool. Подскажите, где я могу получить инструментарий для сборки и какой компилятор поддерживается?

Вроде бы, поддержку целевой платформы WebAssembly завезли в CLang, но у меня есть подозрения, что по датам Qt Group успели бы сделать комплект только для множества инструментов Emscripten.

Answer 1

Для начала, вы не видите kit для сборки в WebAssembly, так как показываются только LTS (Long-term support) пакеты. Выберите чекбокс "Latest releases" и не забудьте нажать на кнопку "Обновить".

Идем дальше. Комплект WebAssembly действительно был разработан для инструментария Emscripten. Поэтому, следуя инструкции, выполняем установку. Важно: исходя из руководства для Qt 5.13 нужна версия sdk ИМЕННО 1.38.27 64 разрядная. Обратите внимание, я выполняю установку без флага "--embedded"

git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
./emsdk install sdk-1.38.27-64bit
brew cask install java
./emsdk activate sdk-1.38.27-64bit
source emsdk_env.sh

Проверяем:

emcc --version
emcc (Emscripten gcc/clang-like replacement) 1.38.27 (commit c56422590bb911603529052b7bd78e6ca3c9fa27)
Copyright (C) 2014 the Emscripten authors (see AUTHORS.txt)
This is free and open source software under the MIT license.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Отлично, установка выполнена. Далее, добавляем компилятор Emscripten C (Добавить -> Особый -> C). Примечание: путь к бинарнику после установки у меня получился следующий:

/Users/tripolskypetr/emsdk/emscripten/1.38.27/emcc

Тоже самое для Emscripten C++ (Добавить -> Особый -> C++), путь имеет следующий вид:

/Users/tripolskypetr/emsdk/emscripten/1.38.27/em++

Выбираем компилятор C и C++, настроенные выше, комплекту.

Первая сборка проекта будет идти очень долго. Ориентируйтесь на диспетчер задач, процесс "asm2wasm" будет в топе. Так же, на этапе проверки wat, будет зависать сам QtCreator (и кушать под 100%, это норма). Для тестовой сборки подойдет один из проектов в этом репозитории или шаблонный проект QML.

Примечание: после успешной сборки Qt Creator не станет автоматически открывать собранное приложение. Сделать это придется мануально, развернув веб-сервер в директории сборки. Просто открыть браузером html документ не достаточно.

cd build-hello-world-Qt_5_13_1_WebAssembly-Debug/
python3 -m http.server

READ ALSO
Ошибка функции sort()

Ошибка функции sort()

В Microsoft Visual Studio Community 2019, V 163

92
Переменные структуры при ее создании конструктором заполнены нулями или мусором?

Переменные структуры при ее создании конструктором заполнены нулями или мусором?

Все мы знаем, что если создать некую локальную переменную, например int a, в нее может попасть мусор и она не будет равна нулю, а может, например...

61
Удалить каждый второй элемент списка

Удалить каждый второй элемент списка

Вечер добрыйНужно написать функцию удаления каждого второго элемента списка

102
Ошибки при использовании функций из dll

Ошибки при использовании функций из dll

У меня есть своя dll библиотека, гдеh файл:

85