Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

nomad-programmer

[Development/WASM] Qt6와 웹 어셈블리 연동 본문

Development/WASM

[Development/WASM] Qt6와 웹 어셈블리 연동

scii 2024. 9. 20. 13:41

나는 Qt6.7을 설치하면서 Qt를 위한 웹 어셈블리 패키지도 함께 설치하였다. 그래서 WASM SDK를 잡아주어야 한다.

https://emscripten.org/docs/getting_started/downloads.html

 

Download and install — Emscripten 3.1.66-git (dev) documentation

Note If you want to use your system’s Node.js instead of the emsdk’s, it may be node instead of nodejs, and you can adjust the NODE_JS attribute of your .emscripten file to point to it.

emscripten.org

그런데 내가 설치한 Qt 버전과 호환성이 좋은 WASM 버전을 설치해야하는데, 어느 버전을 설치해야 하는지 갈팡질팡할 수 있다. 아래는 그 질문에 대한 답이 나와 있다.

https://doc.qt.io/qt-6/wasm.html#install-emscripten

 

Qt for WebAssembly | Qt 6.7

 

doc.qt.io

위 사이트가서 확인해보면, Qt6.7의 경우 SDK의 버전은 3.1.50 이다. 그래서 해당 버전을 설치하였다.


Emscripten 설치

# 소스 다운
git clone https://github.com/emscripten-core/emsdk.git
# 해당 디렉토리로 이동
cd emsdk

./emsdk install 3.1.50
./emsdk activate 3.1.50

SDK가 설치된 모습


Web Assembly Build & Test

간단한 main.cpp 파일을 생성한다.

#include <iostream>

int main() {
    std::cout<<"Hello World!"<<std::endl;
    
    return 0;
}

그 후 main.cpp를 컴파일하면, javascript 파일이 생성된다. 이것을 node를 통해 실행하면 터미널에 Hello World!가 출력된다.

# 빌드
em++ main.cpp

# Run
node a.out.js

HTML 파일을 생성하는 방법

# html 파일 생성
em++ main.cpp -o main.html

# Run
emrun main.html
Comments