рд╡рд┐рдВрдбреЛрдЬ рдкрд░ WebAssembly рдореЗрдВ рдПрдХ рдХреНрдпреВрдЯреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХреНрдпреВрдЯреА рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдЬреЛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо, рдбреЗрд╕реНрдХрдЯреЙрдк, рдореЛрдмрд╛рдЗрд▓, рдЗрдВрдЯрд░рдиреЗрдЯ рдСрдлрд╝ рдерд┐рдВрдЧреНрд╕ рд╕реЗ рд▓реЗрдХрд░ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рддрдХ рдЪрд▓рддреЗ рд╣реИрдВред

рдПрдХ рд╡рд┐рдХрд▓реНрдк WebAssembly рдореЗрдВ рдПрдХ Qt рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реИ - рдЬреЛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдирдИ wasm рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ред

рдЗрд╕ рд▓реЗрдЦ рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдкрд░ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП WebAssembly рдореЗрдВ Qt рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВред

рд╕рдВрд╕реНрдХрд░рдг рдХреНрдпреВрдЯреА 5.13.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓реЗрдЦ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рд╡рд┐рдВрдбреЛрдЬ рдХреНрдпреВрдЯреА рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реНрдерд╛рдкрд┐рдд, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред

рд░рдЦ-рд░рдЦрд╛рд╡ рдХрд░реЗрдВред



рдПрдХ рдЦрд╛рд▓реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреНрдпреВрдЯреА рдХреНрд░рд┐рдПрдЯрд░ (рдХреНрдпреВрдЯреА рд╕реНрдЯреИрдХ-рд╡реНрдпреВ) рдореЗрдВ рдФрд░ рдЗрд╕реЗ рд╕реЗрд╡ рдХрд░реЗрдВред

рд╣рдо рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Qt WASM рдкреНрд░рд▓реЗрдЦрди рдкреГрд╖реНрда рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ ред

рд╣рдо esmdk рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, c: \ wasm рдореЗрдВ emscripten рдФрд░ рдЕрдирдкреИрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

рд╣рдо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ (cmd рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ) рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:

cd c:\emsdk emsdk.bat install sdk-fastcomp-1.38.27-64bit 

рдпрд╣рд╛рдВ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдФрд░ рдХрд░реНрд╕рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣реИред рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдЖрдЗрдП рджреЗрдЦрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВ? рдиреЛрдЯрдкреИрдб рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ:



рдХреНрдпрд╛ рд╣рдореЗрдВ рдЕрдЬрдЧрд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ? рдЪреЗрдХ? рд╣рдо рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ

 c:\emsdk>python --version "python"      ,     . 

рдареАрдХ рд╣реИ, рдлрд┐рд░ рд╣рдореЗрдВ рдЕрднреА рднреА рдкрд╛рдпрдерди рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред "рдкрд╛рдпрдерди 3.8 рдкрд╛рдпрде рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ" рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЪреЗрдХрдорд╛рд░реНрдХ рдЬреЛрдбрд╝рдирд╛ рдпрд╛рдж рд░рдЦреЗрдВ



рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╕реАрдПрдордбреА рдЪрд▓рд╛рдПрдВред рд╣рдо рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ:

 c:\emsdk>python --version Python 3.8.1 

Emsdk рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдмрд┐рд▓реНрдб рд╡рд╛рддрд╛рд╡рд░рдг рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ:

 emsdk.bat install sdk-fastcomp-1.38.27-64bit emsdk.bat activate --embedded sdk-fastcomp-1.38.27-64bit 

рд╣рдо рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ:

 em++ 

рдХрдВрдкрд╛рдЗрд▓рд░ рддреИрдпрд╛рд░ рд╣реИред рдпрд╣ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЖрдЗрдП рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рджреЗрдЦреЗрдВ рдЬрд╣рд╛рдВ Qt wasm рд╕реНрдерд╛рдкрд┐рдд рд╣реИ: рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ C: \ Qt \ 5.13.2 \ wasm_32 рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ

рдорд┐рдВрдЧрд╡ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЪрд▓рд╛рдПрдВ: рдорд┐рдВрдЧрд╡ рд╢реБрд░реВ рдХрд░реЗрдВ - Qt 5.13.2 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ (MinGW 7.3.0-90%)

рд╣рдо рдЗрд╕рдореЗрдВ рдЕрдкрдирд╛ emsdk рд╕рдХреНрд░рд┐рдп рдХрд░рддреЗ рд╣реИрдВ:

 c:\emsdk\emsdk.bat activate --embedded sdk-fastcomp-1.38.27-64bit 

рд╣рдо рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:

 cd c:\Project\test-wasm qmake "qmake"      ,     . 


рдХреНрдпрд╛ рдХреБрдЫ рдЧрд▓рдд рд╣реБрдЖ? рдХреНрдпрд╛ рдореИрдВрдиреЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ? рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВ: mingw рд╢реБрд░реВ рдХрд░реЗрдВ - Qt 5.13.2 (MinGW 7.3.0 32-рдмрд┐рдЯ) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ qmake рд╣реИ:

 Setting up environment for Qt usage... C:\Qt\5.13.2\mingw73_32>qmake --version QMake version 3.1 Using Qt version 5.13.2 in C:/Qt/5.13.2/mingw73_32/lib 

рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рдХреНрдпреВрдЯреА рдкрд░реНрдпрд╛рд╡рд░рдг рд╕рдХреНрд░рд┐рдп рд╣реИ рдФрд░ рдХреНрдпреВрдореЗрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИред рд╣рдо рдлрд┐рд░ рд╕реЗ emsdk рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдФрд░ рдЙрд╕реА рддреНрд░реБрдЯрд┐ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛, рдПрдХ рджреЛрд╕реНрдд рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ: рдкрд╣рд▓реЗ рдИрдорд╕реНрдХрдХ рдЪрд▓рд╛рдПрдВ рдФрд░ рдлрд┐рд░ рдорд┐рдВрдЧрд╡ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ - рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдорд┐рдВрдЧрд╡реЙ 3 рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдХрдВрд╕реЛрд▓ рд▓реЙрдиреНрдЪ рд╢реЙрд░реНрдЯрдХрдЯ рдХреЛ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ (рдорд┐рдВрдЧрд╡ рд╢реБрд░реВ рдХрд░реЗрдВ - рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рди - рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ "рдХреНрдпреВрдЯреА рдкрд░" 5.13.2 (MinGW 7.3.0 32-рдмрд┐рдЯ) тАЭ- рдЧреБрдгред



рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ, рд╣рдо рдмреИрдЯ рдлрд╝рд╛рдЗрд▓ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрде рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ C: \ Qt \ 5.13.2 \ mingw73_32 \ bin \ qtenv2.bat рд╣реИ

рддреЛ, рд╣рдо рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред Cmd рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ

 c:\emsdk\emsdk.bat activate --embedded sdk-fastcomp-1.38.27-64bit C:\Qt\5.13.2\mingw73_32\bin\qtenv2.bat qmake --version 

рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ... рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдЬрд╛рдПрдВ

 qmake make "make"      ,     . 

рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рд╣рдо рдорд┐рдВрдЧрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдЗрд╕рдореЗрдВ рдЕрд▓рдЧ рд╣реИ:
mingw32-make.exe

 mingw32-make 

рдЖрд╡реЗрджрди рдЗрдХрдЯреНрдард╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 g++ -Wl,-s -Wl,-subsystem,windows -mthreads -o release\test-wasm.exe release/main.o release/qrc_qml.o C:\Qt\5.13.2\mingw73_32\lib\libQt5Quick.a C:\Qt\5.13.2\mingw73_32\lib\libQt5Gui.a C:\Qt\5.13.2\mingw73_32\lib\libQt5Qml.a C:\Qt\5.13.2\mingw73_32\lib\libQt5Network.a C:\Qt\5.13.2\mingw73_32\lib\libQt5Core.a -lmingw32 C:\Qt\5.13.2\mingw73_32\lib\libqtmain.a -LC:\openssl\lib -LC:\Utils\my_sql\mysql-5.7.25-win32\lib -LC:\Utils\postgresql\pgsql\lib -lshell32 mingw32-make.exe[1]: Leaving directory 'c:/Project/test-wasm' 


So. рдмрдВрдж рдХрд░реЛ? рд╣рдордиреЗ рдХреНрдпрд╛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рд╣реИ?

рд╣рдордиреЗ рдбреЗрд╕реНрдХрдЯреЙрдк (x86) рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп 32-рдмрд┐рдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЕрд╕реЗрдВрдмрд▓реА C: \ Qt \ 5.13.2 \ mingw73_32 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛

рдФрд░ рд╣рдореЗрдВ WASM рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЪрд▓реЛ рдкрде рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ wasm рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдкрде рдФрд░ qmake рд▓реЗ:

 set PATH=c:\Qt\5.13.2\wasm_32\bin;%PATH% 

рд╣рдо рдПрдХрддреНрд░рд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рддреЗ рд╣реИрдВ

 mingw32-make.exe clean del .qmake.stash 

рд╣рдо рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ

 qmake 



рдХреНрдпрд╛ рд╣реИ рдлрд┐рд░ рд╕реЗ рдПрдХ рдЧрд▓рддреА? рд╣рдореЗрдВ рдХрд┐рд╕ рддрд░рд╣ рдХреА dll рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЖрдЗрдП рдЗрд╕реЗ рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджреЗрдЦреЗрдВ рдЬрд╣рд╛рдВ Qt рд╕реНрдерд╛рдкрд┐рдд рд╣реИ:
рдпрд╣ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? 32-рдмрд┐рдЯ рд╕рдВрдХрд▓рд┐рдд WASM (c: \ Qt \ 5.13.2 \ wasm_32 \ bin) 64-рдмрд┐рдЯ MINGW рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ?



рдареАрдХ рд╣реИ, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдПрдХ рдореМрдХрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ 64 рдмрд┐рдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд░рд╛рд╕реНрддрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

 set PATH=c:\qt\5.13.2\mingw73_64\bin;%PATH% mingw32-make.exe clean qmake mingw32-make.exe 

рдФрд░ ... рдмрд╣реБрдд рд╕рд╛рд░реА рдЧрд▓рддрд┐рдпрд╛рдБ

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
 release/main.o:main.cpp:(.text+0x1bc): undefined reference to `_imp___ZN4QUrlD1Ev' release/main.o:main.cpp:(.text+0x1c6): undefined reference to `_imp___ZN11QMetaObject10ConnectionD1Ev' release/main.o:main.cpp:(.text+0x1d7): undefined reference to `_imp___ZN21QQmlApplicationEngine4loadERK4QUrl' release/main.o:main.cpp:(.text+0x1e0): undefined reference to `_imp___ZN15QGuiApplication4execEv' release/main.o:main.cpp:(.text+0x1ef): undefined reference to `_imp___ZN21QQmlApplicationEngineD1Ev' release/main.o:main.cpp:(.text+0x1f8): undefined reference to `_imp___ZN15QGuiApplicationD1Ev' release/main.o:main.cpp:(.text+0x225): undefined reference to `_imp___ZN10QArrayData10deallocateEPS_jj' release/main.o:main.cpp:(.text+0x249): undefined reference to `_imp___ZN21QQmlApplicationEngineD1Ev' release/main.o:main.cpp:(.text+0x252): undefined reference to `_imp___ZN15QGuiApplicationD1Ev' release/main.o:main.cpp:(.text+0x276): undefined reference to `_imp___ZN10QArrayData10deallocateEPS_jj' release/main.o:main.cpp:(.text+0x28f): undefined reference to `_imp___ZN4QUrlD1Ev' release/main.o:main.cpp:(.text+0x2aa): undefined reference to `_imp___ZN4QUrlD1Ev' release/qrc_qml.o:qrc_qml.cpp:(.text+0x23): undefined reference to `qUnregisterResourceData(int, unsigned char const*, unsigned char const*, unsigned char const*)' release/qrc_qml.o:qrc_qml.cpp:(.text+0x53): undefined reference to `qRegisterResourceData(int, unsigned char const*, unsigned char const*, unsigned char const*)' release/qrc_qml.o:qrc_qml.cpp:(.text+0x83): undefined reference to `qUnregisterResourceData(int, unsigned char const*, unsigned char const*, unsigned char const*)' release/qrc_qml.o:qrc_qml.cpp:(.text.startup+0x23): undefined reference to `qRegisterResourceData(int, unsigned char const*, unsigned char const*, unsigned char const*)' 


 C:/Qt/Tools/mingw730_32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-w64-mingw32/lib/../lib/libmingw32.a(lib32_libmingw32_a-crt0_c.o):crt0_c.c:(.text.startup+0x39): undefined reference to `WinMain@16' collect2.exe: error: ld returned 1 exit status mingw32-make[1]: *** [Makefile.Release:66: release/test-wasm.exe] Error 1 mingw32-make[1]: Leaving directory 'c:/Project/test-wasm' mingw32-make: *** [Makefile:38: release] Error 2 

рдЗрддрдиреА рдЧрд▓рддрд┐рдпрд╛рдБ рдХреНрдпреЛрдВ? рдЖрдкрдиреЗ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛? рдореИрдВрдиреЗ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╛рдл рдХрд┐рдпрд╛, рдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рдХрд┐рдпрд╛, рдФрд░ рдмрд╣реБрдд рд╕реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓реАред

рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдПрдХ рдХрдк рдЪрд╛рдп / рдХреЙрдлреА рдбрд╛рд▓реЗрдВ ...

рдмрд┐рд▓рдХреБрд▓ рд╕рд╣реА! рд╡рд┐рдЪрд╛рд░! рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рд╣рдордиреЗ 64-рдмрд┐рдЯ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдЦрд┐рд░реА рд░рд╛рд╕реНрддрд╛ рд▓рд┐рдЦрд╛ рдерд╛, рдлрд┐рд░ 32-рдмрд┐рдЯ WASM рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп, рд╡рд╣ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭ рдкрд╛рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдФрд░ рдХреНрдпрд╛ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рд╣реИ, рдФрд░ 64-рдмрд┐рдЯ lib рдХреЗ рд▓рд┐рдП рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдореБрдЭреЗ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 32 рдмрд┐рдЯ рдХреЗ рд▓рд┐рдП рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ 64 рдмрд┐рдЯред рдореИрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛:

рдХрдВрд╕реЛрд▓ рдмрдВрдж рдХрд░реЗрдВред рд╣рдо рдлрд┐рд░ рд╕реЗ 32-рдмрд┐рдЯ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдБ рд╡рд┐рдЪрд╛рд░ рдореБрдЭреЗ рдорд┐рд▓рддреЗ рд╣реИрдВ: рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 32 рдмрд┐рдЯ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╢реБрд░реВ рдХреА рд╣реИ, рдлрд┐рд░ 64 рдмрд┐рдЯреНрд╕ рдХреЗ рд╕рд╛рде рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдХреА рдЬрдЧрд╣, рд╣рдо 64 рдмрд┐рдЯ рдШрдЯрдХреЛрдВ рдкрд░ рдХреНрдпреВрдЯреА рдбреЗрд╕реНрдХрдЯреЙрдк рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдлрд┐рд░ рд╕реЗ рдкреВрд░реНрд╡рддрд╛ рд▓реЗрдВрдЧреЗ, рдФрд░ рд╣рдореЗрдВ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдкреИрдЯ рдкрд╣рд▓реЗ 64 рдмрд┐рдЯ рддрдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) рдФрд░ рдлрд┐рд░ 32 рдХреБрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рддрдХ)ред рдареАрдХ рд╣реИ, рддреЛ рд╣рдорд╛рд░рд╛ рдЕрдВрддрд┐рдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:

 cmd c:\emsdk\emsdk.bat activate --embedded sdk-fastcomp-1.38.27-64bit set PATH=c:\qt\5.13.2\mingw73_64\bin;%PATH% qmake --version QMake version 3.1 Using Qt version 5.13.2 in C:/qt/5.13.2/mingw73_64/lib 

wasm рдХреЗ рд▓рд┐рдП рдкрде рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ:

 set PATH=c:\Qt\5.13.2\wasm_32\bin;%PATH% cd c:\Project\test-wasm c:\Project\test-wasm>qmake --version QMake version 3.1 Using Qt version 5.13.2 in C:/Qt/5.13.2/wasm_32/lib qmake mingw32-make "mingw32-make"      ,     . 

25 рдлрд┐рд░ рд╕реЗ! рдЕрдм рдореЗрд░рд╛ рдХреНрдпрд╛ рдХрд╕реВрд░ рд╣реИ? рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХрд╣рд╛рдБ рд╣реИ? рдХрд╣рд╛рдБ рддрдХ? рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдХреА рдЦреЛрдЬреЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ C: \ Qt \ Tools \ mingw730_32 \ bin рдореЗрдВ рд╣реИ

рдЦреИрд░, mingw32-make.exe рдЕрдм рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдорд┐рд▓реЗрдЧреА:

 set PATH=C:\Qt\Tools\mingw730_32\bin;%PATH% 

рд╣рдо рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:

 c:\Project\test-wasm>mingw32-make c:\Qt\5.13.2\wasm_32\bin\qmake.exe -o Makefile test-wasm.pro Info: creating stash file C:\Project\test-wasm\.qmake.stash sed -es/@APPNAME@/test-wasm/g C:/Qt/5.13.2/wasm_32/plugins/platforms/wasm_shell.html > C:/Project/test-wasm/test-wasm.html "sed"      ,     . mingw32-make: *** [Makefile:424: apphtml] Error 1 

рд╕реЗрдб ?? рдпрд╣ рд▓рд┐рдирдХреНрд╕, рдореИрдХ, * рдирд┐рдХреНрд╕, * рдмреАрдПрд╕рдбреА рдирд╣реАрдВ рд╣реИред рдХрд╣рд╛рдВ рд╕реЗ рд▓рд╛рдПрдВ? рдЦреЛрдЬ (sed.exe)? .. рдФрд░ рд╣рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓реАред

рд╣рдо рдЗрдВрдЯрд░рдиреЗрдЯ рд▓реЗрддреЗ рд╣реИрдВ, (sed рдбрд╛рдЙрдирд▓реЛрдб рд╡рд┐рдВрдбреЛрдЬрд╝) рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдмрд╛рдпрдиреЗрд░реА рдЬрд╝рд┐рдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдмрд┐рди / sed.exe рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдЕрдирдкреИрдХ рдХрд░реЗрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ:





рд▓рд╛рдкрддрд╛ dll рдШрдЯрдХреЛрдВ рдкрд░ рджреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВред рдХреНрдпрд╛ рд╣рдореЗрдВ рдЕрднреА рднреА рд╕реНрд░реЛрдд рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдпрд╛ рдЗрди рд▓рд╛рдкрддрд╛ dll рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП sed рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдирд╣реАрдВ, рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ ... рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рд╣рдо рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рдЬреАрдПрдирдпреВ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ: тАв рдкреВрд░рд╛ рдкреИрдХреЗрдЬ, рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕реЗрдЯрдЕрдк

рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЕрдирдкреИрдХ рдХрд░реЗрдВ рдФрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВред рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:

 "c:\Program Files (x86)\GnuWin32\bin\sed.exe" 

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ !!! рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдмрд╛рдХреА рд╣реИ:

 set PATH="c:\Program Files (x86)\GnuWin32\bin";%PATH% mingw32-make 

рдкреНрд░реЛрд╕реЗрд╕рд░ рдмреВрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЕрд╕реЗрдВрдмрд▓реА рд╢реБрд░реВ рд╣реЛ рдЧрдИ рд╣реИред рдЦреИрд░, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдм рд╣рдо рд╕рдлрд▓ рд╣реЛрдВрдЧреЗ!

... рдорд┐рдирдЯ рд▓рдЧ рдЧрдП

 emcc: warning: cannot represent a NaN literal '0x22748a2c570' with custom bit pattern in NaN-canonicalizing JS engines (eg Firefox and Safari) without erasing bits! in ret double 0x7FF4000000000000 in _ZL7qt_snanv() emcc: warning: cannot represent a NaN literal '0x22748a2c570' with custom bit pattern in NaN-canonicalizing JS engines (eg Firefox and Safari) without erasing bits! in ret double 0x7FF4000000000000 in _ZL7qt_snanv.30589() c:\Project\test-wasm>dir ... 25.01.2020 17:42 2 922 test-wasm.html 25.01.2020 17:55 355 725 test-wasm.js 25.01.2020 14:59 461 test-wasm.js_plugin_import.cpp 25.01.2020 16:23 4 384 test-wasm.js_plugin_import.obj 25.01.2020 15:49 601 test-wasm.js_qml_plugin_import.cpp 25.01.2020 16:23 4 668 test-wasm.js_qml_plugin_import.obj 25.01.2020 14:52 1 099 test-wasm.pro 25.01.2020 15:25 22 523 test-wasm.pro.user 25.01.2020 17:55 20 759 738 test-wasm.wasm 

рд╣реБрд░реНрд░реЗ! рдпрд╣ рдирд┐рдХрд▓рд╛ред рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рд╣реИред рд╡рд╛рд╕рдо рдмрд┐рдирд╛рд░ 20 рдПрдордмреА рд▓реЗрддрд╛ рд╣реИред рдереЛрдбрд╝рд╛ рдирд╣реАрдВред рдЖрдЗрдП рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг-wasm.htm рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреЛрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ ...



Windows рдкрд░ 5.13.2 рдХреЗ рд▓рд┐рдП Qt рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:



1. рдЖрдкрдХреЛ рдкрд╛рдпрдерди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред GNU SED рдФрд░ рдСрдирд▓рд╛рдЗрди рд╕реНрдерд╛рдкрд┐рдд Qt рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рдЗрдирд░реА рдЕрд╕реЗрдВрдмрд▓реА WebAssembly рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

2ред
 c:\emsdk\emsdk.bat activate --embedded sdk-fastcomp-1.38.27-64bit set PATH="c:\Program Files (x86)\GnuWin32\bin";%PATH% set PATH=c:\qt\5.13.2\mingw73_64\bin;%PATH% set PATH=C:\Qt\Tools\mingw730_32\bin;%PATH% 

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо Qt рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ WebAssembly рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ , рдЬреЛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ 5.14.0 рд╣реИ, рддреЛ Habr Habr рдирд╣реАрдВ рд╣реЛрдЧрд╛ ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ 5.13.2 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдЕрдВрдд рд╕реЗ рдЙрд╕реА рдЦреЛрдЬ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред

рдСрдирд▓рд╛рдЗрди рдЗрдВрд╕реНрдЯреЙрд▓рд░ (рд░рдЦ-рд░рдЦрд╛рд╡ рдЯреВрд▓ред Exe) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо 5.14.0 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП Qt WebAssembly рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдЪрд▓рд╛рддреЗ рд╣реИрдВред

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдЧреЗ рдмрдврд╝рддреА рд╣реИ рдФрд░ ...



рдХреБрдЫ рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рд╡рд╣ рдХреИрд╕реЗ рд╣реИ? рд╕рдВрд╕реНрдХрд░рдг 5.13.2 рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдЦрд░реЗ рдХреЗ рд╕рд╛рде рдиреГрддреНрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛, рд▓реЗрдХрд┐рди 5.14.0 рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛? рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЙрдиреНрд╣реЛрдВрдиреЗ (рдХреНрдпреВрдЯреА) рдЗрд╕реЗ рдХреИрд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛?

... рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣рдо рд╕реНрд░реЛрдд рд╕реЗ WASM Qt 5.14.0 рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдФрд░ рдХреНрдпреЛрдВ рди рд╣реЛред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реНрдерд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╕рд╛рде рд╣реА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд▓реЛрдб / рд▓реЛрдб:

 echo PATH=c:\qtwasm514\bin;"C:\Program Files (x86)\GnuWin32\bin";c:\qt\Tools\mingw730_32\bin;%PATH% c:\emsdk\emsdk.bat activate --embedded sdk-fastcomp-1.38.27-64bit cd c:\Qt\5.14.0\Src configure.bat -no-warnings-are-errors -xplatform wasm-emscripten -platform win32-g++ -nomake examples -prefix c:\qtwasm 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рдж, рд╣рдо c: \ qtwasm рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рднреА рд╣рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЖрдЙрдЯрдкреБрдЯ
 Building on: win32-g++ (i386, CPU features: none) Building for: wasm-emscripten (wasm, CPU features: none) Target compiler: clang 6.0.1 Configuration: cross_compile largefile release c++11 no-pkg-config reduce_exports static stl Build options: Mode ................................... release Optimize release build for size ........ no Building shared libraries .............. no Using C standard ....................... C11 Using C++ standard ..................... C++11 Using ccache ........................... no Using precompiled headers .............. no Using LTCG ............................. no Target compiler supports: Build parts ............................ libs Qt modules and options: Qt Concurrent .......................... no Qt D-Bus ............................... no Qt D-Bus directly linked to libdbus .... no Qt Gui ................................. yes Qt Network ............................. yes Qt Sql ................................. no Qt Testlib ............................. yes Qt Widgets ............................. yes Qt Xml ................................. yes Support enabled for: Using pkg-config ....................... no udev ................................... no Using system zlib ...................... no Zstandard support ...................... no Qt Core: DoubleConversion ....................... yes Using system DoubleConversion ........ no GLib ................................... no iconv .................................. yes ICU .................................... no Built-in copy of the MIME database ..... yes Tracing backend ........................ none Logging backends: journald ............................. no syslog ............................... no slog2 ................................ no Using system PCRE2 ..................... no Qt Network: getifaddrs() ........................... no IPv6 ifname ............................ no libproxy ............................... no OpenSSL ................................ no Qt directly linked to OpenSSL ........ no OpenSSL 1.1 ............................ no DTLS ................................... no OCSP-stapling .......................... no SCTP ................................... no Use system proxies ..................... yes Qt Gui: Accessibility .......................... yes FreeType ............................... yes Using system FreeType ................ no HarfBuzz ............................... yes Using system HarfBuzz ................ no Fontconfig ............................. no Image formats: GIF .................................. yes ICO .................................. yes JPEG ................................. yes Using system libjpeg ............... no PNG .................................. yes Using system libpng ................ no EGL .................................... yes OpenVG ................................. no OpenGL: Desktop OpenGL ....................... no OpenGL ES 2.0 ........................ yes OpenGL ES 3.0 ........................ no OpenGL ES 3.1 ........................ no OpenGL ES 3.2 ........................ no Vulkan ................................. no Session Management ..................... yes Features used by QPA backends: evdev .................................. no libinput ............................... no INTEGRITY HID .......................... no mtdev .................................. no tslib .................................. no xkbcommon .............................. no X11 specific: XLib ................................. no XCB Xlib ............................. no EGL on X11 ........................... no QPA backends: DirectFB ............................... no EGLFS .................................. no LinuxFB ................................ no VNC .................................... yes Mir client ............................. no Qt Sql: SQL item models ........................ yes Qt Widgets: GTK+ ................................... no Styles ................................. Fusion Windows Qt PrintSupport: CUPS ................................... no Qt Sql Drivers: DB2 (IBM) .............................. no InterBase .............................. no MySql .................................. no OCI (Oracle) ........................... no ODBC ................................... no PostgreSQL ............................. no SQLite2 ................................ no SQLite ................................. yes Using system provided SQLite ......... no TDS (Sybase) ........................... no Qt Testlib: Tester for item models ................. yes Qt SerialBus: Socket CAN ............................. no Socket CAN FD .......................... no SerialPort Support ..................... no Further Image Formats: JasPer ................................. no MNG .................................... no TIFF ................................... yes Using system libtiff ................. no WEBP ................................... yes Using system libwebp ................. no Qt QML: QML network support .................... yes QML debugging and profiling support .... yes QML tracing JIT support ................ no QML sequence object .................... yes QML list model ......................... yes QML XML http request ................... yes QML Locale ............................. yes QML delegate model ..................... yes Qt Quick: Direct3D 12 ............................ no AnimatedImage item ..................... yes Canvas item ............................ yes Support for Qt Quick Designer .......... yes Flipable item .......................... yes GridView item .......................... yes ListView item .......................... yes TableView item ......................... yes Path support ........................... yes PathView item .......................... yes Positioner items ....................... yes Repeater item .......................... yes ShaderEffect item ...................... yes Sprite item ............................ yes Qt Scxml: ECMAScript data model for QtScxml ...... yes Qt Gamepad: SDL2 ................................... no Qt 3D GeometryLoaders: Autodesk FBX ........................... no Qt Wayland Client ........................ no Qt Wayland Compositor .................... no Qt Bluetooth: BlueZ .................................. no BlueZ Low Energy ....................... no Linux Crypto API ....................... no WinRT Bluetooth API (desktop & UWP) .... no WinRT advanced bluetooth low energy API (desktop & UWP) . no Qt Sensors: sensorfw ............................... no Qt Quick Controls 2: Styles ................................. Default Fusion Imagine Material Universal Qt Quick Templates 2: Hover support .......................... yes Multi-touch support .................... yes Qt Positioning: Gypsy GPS Daemon ....................... no WinRT Geolocation API .................. no Qt Location: Qt.labs.location experimental QML plugin . yes Geoservice plugins: OpenStreetMap ........................ no HERE ................................. yes Esri ................................. yes Mapbox ............................... yes MapboxGL ............................. no Itemsoverlay ......................... yes QtXmlPatterns: XML schema support ..................... yes Qt Multimedia: ALSA ................................... no GStreamer 1.0 .......................... no GStreamer 0.10 ......................... no Video for Linux ........................ no OpenAL ................................. no PulseAudio ............................. no Resource Policy (libresourceqt5) ....... no Windows Audio Services ................. no DirectShow ............................. no Windows Media Foundation ............... no Qt Tools: QDoc ................................... no Qt WebEngineCore: Qt WebEngine Widgets ................... yes Qt WebEngine Qml ....................... yes Embedded build ......................... yes Full debug information ................. no Pepper Plugins ......................... no Printing and PDF ....................... no Proprietary Codecs ..................... no Spellchecker ........................... yes Native Spellchecker .................... no WebRTC ................................. no Use System Ninja ....................... no Geolocation ............................ yes WebChannel support ..................... yes Use v8 snapshot ........................ yes Kerberos Authentication ................ no Extensions ............................. no Support qpa-xcb ........................ no Building v8 snapshot supported ......... yes Use ALSA ............................... no Use PulseAudio ......................... no Optional system libraries used: re2 .................................. no icu .................................. no libwebp, libwebpmux and libwebpdemux . no opus ................................. no ffmpeg ............................... no libvpx ............................... no snappy ............................... no glib ................................. no zlib ................................. no minizip .............................. no libevent ............................. no jsoncpp .............................. no protobuf ............................. no libxml2 and libxslt .................. no lcms2 ................................ no png .................................. no JPEG ................................. no harfbuzz ............................. no freetype ............................. no Required system libraries: fontconfig ........................... no dbus ................................. no nss .................................. no khr .................................. no glibc ................................ no Required system libraries for qpa-xcb: x11 .................................. no libdrm ............................... no xcomposite ........................... no xcursor .............................. no xi ................................... no xtst ................................. no Qt WebEngineQml: UI Delegates ........................... yes Test Support ........................... no Note: Using static linking will disable the use of dynamically loaded plugins. Make sure to import all needed static plugins, or compile needed modules into the library. Note: No wayland-egl support detected. Cross-toolkit compatibility disabled. Note: The following modules are not being compiled in this configuration: serialport 3dcore 3drender WARNING: QDoc will not be compiled, probably because libclang could not be located. This means that you cannot build the Qt documentation. Either ensure that llvm-config is in your PATH environment variable, or set LLVM_INSTALL_DIR to the location of your llvm installation. On Linux systems, you may be able to install libclang by installing the libclang-dev or libclang-devel package, depending on your distribution. On macOS, you can use Homebrew's llvm package. On Windows, you must set LLVM_INSTALL_DIR to the installation path. WARNING: host pkg-config not found Qt is now configured for building. Just run 'mingw32-make'. Once everything is built, you must run 'mingw32-make install'. Qt will be installed into 'c:\qtwasm'. Prior to reconfiguration, make sure you remove any leftovers from the previous build. 


рд╣рдо рдЗрдХрдЯреНрдард╛ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд:

 mingw32-make mingw32-make install 

WASM Qt 5.14.0 рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдФрд░ c: \ qtwasm рдХреЛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕ рдкрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ Qt рдХреЗ 5.14.0 рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ WebAssembly рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖ реиред


рдпрджрд┐ рдЖрдк Qt 5.14.0 WebAssembly рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдФрд░ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдмрдирд╛рдпрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


Qt WebAssembly рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рд╕рдВрд╕реНрдХрд░рдг 5.12 рдХреЗ рдмрд╛рдж рд╕реЗ рдХреНрдпреВрдЯреА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреА рд╣реИред

WebAssembly рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ Qt рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдСрдирд▓рд╛рдЗрди рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рдореИрдВ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛, рдореБрдЭреЗ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдорд┐рд▓реАрдВ



рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЗрд╕рдХреА рд╕реАрдорд╛рдУрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рд╣реИрдВ: рдХреНрдпреВрдЯрдореБрд▓реНрдЯрд┐рдореА, рдХреНрдпреВрдЯреАрдмреНрдпреВрд╡реНрдпреВред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ WebAssembly рдЬреНрдпрд╛рджрд╛рддрд░ рдбреЗрд╕реНрдХрдЯреЙрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдЕрдВрдд рддрдХ рдкрдврд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА рднреА рдХреНрдпреВрдЯреА рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рд╣реИ, рдЖрдк рдСрдирд▓рд╛рдЗрди рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдорд┐рдирдЧрд╡ рд╡рд┐рдХрд▓реНрдк рдФрд░ рдХреНрдпреВрдЯреА рд╡реЗрдмрдПрд╕реНрд▓реА рдХреЗ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред QtCreator рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЖрдк рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ Qt рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, Src \ qtcharts \ рдЙрджрд╛рд╣рд░рдг рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЪрд▓рд╛рдПрдВред

рд╡реЗрдм рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:
python -m http.server 8000 --bind 192.168.0.10 рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдВрдкреНрдпреВрдЯрд░ рдХрд╛ рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ 192.168.0.10 рдореЗрдВ рдкрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдореЗрдВ рдкреЛрд░реНрдЯ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛, рдФрд░ рдлрд┐рд░ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдХрдВрдкреНрдпреВрдЯрд░ / рдбрд┐рд╡рд╛рдЗрд╕ / рд╕реНрдорд╛рд░реНрдЯрдлреЛрди рд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЦреЛрд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡реЛрдЯ рджреЗрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ C ++ Qt рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда GUI рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдВред

рдЕрдкрдиреА рд░рдЪрдирд╛рддреНрдордХрддрд╛ рдФрд░ рдирдИ рдЙрдкрд▓рдмреНрдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!

Source: https://habr.com/ru/post/hi485610/


All Articles