c++ - Qt 网页程序集 : configure kit

标签 c++ qt build emscripten webassembly

我想为我的科学程序测试 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++ 编译器。
Kits

当我更改为 Qt Versions 时,我也会收到警告.警告说:
ABI detection failed: Make sure to use a matching compiler when building. No qmlscene installed. 

这是所有可选择的编译器的列表:
compilers

问题:

我真的不明白什么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 维护工具并查看已安装的软件包时,我得到以下信息:
qt_maintenance

编辑2:
改用Qt Creator后4.11.0-beta2 (4.10.83)我能够关注 this 的部分内容描述。我能够选择插件,但我仍然无法更改设备类型。
qtDeviceType

也许这与我现在得到的这个错误有关:
error

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 .这是一个问题吗?

编辑

这是我的编译器页面的样子:
newCompilers

最佳答案

  • 您需要将 .emscripten 文件从 emsdk 目录复制到您的家 (/home/myUsername)。
  • 您需要手动修复文件中的路径(请参见下面的示例)。

  • 请注意 .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/

    相关文章:

    c++ - 为什么在这段代码中将 char 'g' 读入 int 会产生数字 -858993460?

    c++ - 使用 RecursiveASTVisitor 访问 Clang AST 时确定 Stmt 的父函数节点

    c++ - 如何将 Visual Studio 项目导出到 Qt?

    Qt 5 与 SQLite : bindValue() results in "Parameter count mismatch" error

    ios - 使用本地服务器分发企业 IPA

    c++ - C++中静态变量的存储位置是什么时候确定的?

    android - 即使路径正确,Unity 也无法选择 Android SDK

    c++ - 路径定位错误: Program "make" not found in PATH?

    c++ - C++ 17的新功能是什么?

    c++ - QTableWidget改变选择模式