c++ - Qt Web组件: 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文件夹,其中包含binqmake:
$ ~/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

我注意到的一件事是,如果我在QtCreator >>套件>>编译器中使用add,并且选择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++ - Valgrind callgrind是否使用总时间或 “execution time”创建数据

    c++ - 将对存储在QObject子类中

    在Visual Studio Team Services上项目生成失败-缺少锁定文件

    javascript - 如何在Angular的dist中引用图像资源

    android - 在圆ci中找不到com.android.tools.build :gradle:3. 0.0-alpha1

    c++ - 使用POCO JSON进行增量解析

    c++ - 用新的位置覆盖内存中的对象

    c++ - 我在IEEE754乘法中失去了2的能力

    qt - 动态更改样式表

    c++ - QT:在哪里可以找到examples.pri文件