我想为我的科学程序测试 QT WebAssembly。
因此,我安装了 emscripten。
$em++ --version
返回
emcc (Emscripten gcc/clang-like replacement) 1.38.30 (commit a5082b232617c762cb65832429f896c838df2483)...
然后我使用 Qt WebInstaller 安装了 Qt。
在我的安装目录中,我有一个
wasm_32
包含 bin
的文件夹和 qmake
:$ ~/Qt_web/5.13.2/wasm_32/bin/qmake --version
返回
QMake version 3.1
Using Qt version 5.13.2 in /home/myName/Qt_web/5.13.2/wasm_32/lib
但是,当我启动 Qt Creator 时,单击
Projects
我看到一个名为:Qt 5.13.2 WebAssembly
的套件但我不能选择它(它是灰色的)。当我单击管理套件时,我看到没有为 Qt 5.13.2.WebAssembly 选择 C 和 C++ 编译器。
当我更改为
Qt Versions
时,我也会收到警告.警告说:ABI detection failed: Make sure to use a matching compiler when building. No qmlscene installed.
这是所有可选择的编译器的列表:
问题:
我真的不明白什么
emscripten
与这一切有关。 emscripten 是编译器吗?如果是,它应该由 Qt 5.13.2 WebAssembly
自动选择成套工具?如何正确
Qt WebAssembly
套件长什么样?如果我选择 gcc 作为我的编译器,我会收到一条错误消息:
/home/myName/Qt_web/5.13.2/wasm_32/plugins/platforms/libqwasm.a:-1: error: error adding symbols: File format not recognized
编辑:
当我打开 qt 维护工具并查看已安装的软件包时,我得到以下信息:
编辑2:
改用Qt Creator后
4.11.0-beta2 (4.10.83)
我能够关注 this 的部分内容描述。我能够选择插件,但我仍然无法更改设备类型。也许这与我现在得到的这个错误有关:
EDIT3:
好像我的 emscripten 编译器有一些问题。
编译器是否位于:
emscripten/emsdk/clang/e1.38.30_64bit/clang++
emscripten/emsdk/clang/e1.38.30_64bit/clang
我注意到的一件事是,如果我使用
add
在 QtCreator >> Kits >> Compilers 中,我选择 Add >> WebAssembly >> C
它在 Manual >> C++ >> Emscripten Compiler
中生成一个新条目而不是在 Manual >> C >> Emscripten Compiler
.这是一个问题吗?编辑
这是我的编译器页面的样子:
最佳答案
请注意 .emscripten 文件,至少在我使用的版本 (1.39.8) 中,是一个 python 脚本(可能是一个错误?)
编辑前的示例文件:
import os
emsdk_path = os.path.dirname(os.environ.get('EM_CONFIG')).replace('\\', '/')
NODE_JS = emsdk_path + '/node/12.18.1_64bit/bin/node'
LLVM_ROOT = emsdk_path + '/upstream/bin'
BINARYEN_ROOT = emsdk_path + '/upstream'
EMSCRIPTEN_ROOT = emsdk_path + '/upstream/emscripten'
TEMP_DIR = emsdk_path + '/tmp'
COMPILER_ENGINE = NODE_JS
JS_ENGINES = [NODE_JS]
编辑后:import os
emsdk_path = os.path.dirname(os.environ.get('EM_CONFIG')).replace('\\', '/')
NODE_JS = '/home/myUsername/node/12.18.1_64bit/bin/node'
LLVM_ROOT = '/home/myUsername/upstream/bin'
BINARYEN_ROOT = '/home/myUsername/upstream'
EMSCRIPTEN_ROOT = '/home/myUsername/upstream/emscripten'
TEMP_DIR = '/home/myUsername/tmp'
COMPILER_ENGINE = NODE_JS
JS_ENGINES = [NODE_JS]
完成上述步骤后,qt creator 能够检测到 Emscripten 编译器而没有错误。
关于c++ - Qt 网页程序集 : configure kit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58970301/