C++ Qt web程序集:配置工具包
我想为我的科学项目测试QT WebAssembly。 因此,我安装了emscriptenC++ Qt web程序集:配置工具包,c++,qt,build,emscripten,webassembly,C++,Qt,Build,Emscripten,Webassembly,我想为我的科学项目测试QT WebAssembly。 因此,我安装了emscripten $em++ --version 返回 emcc (Emscripten gcc/clang-like replacement) 1.38.30 (commit a5082b232617c762cb65832429f896c838df2483)... 然后,我使用QtWebInstaller安装了Qt。 在我的安装目录中,我有一个wasm_32文件夹,其中包含bin和qmake: $ ~/Qt_web/5
$em++ --version
返回
emcc (Emscripten gcc/clang-like replacement) 1.38.30 (commit a5082b232617c762cb65832429f896c838df2483)...
然后,我使用QtWebInstaller安装了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.132.WebasBalm没有C和C++编译器。
当我切换到Qt版本时,也会收到一条警告。警告说:
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维护工具并查看已安装的软件包时,我得到以下信息:
EDIT2:
在更改为Qt Creator4.11.0-beta2(4.10.83)
之后,我能够按照部分描述进行操作。我可以选择插件,但我仍然无法更改设备类型。
也许这与我现在得到的错误有关:
EDIT3:
似乎我的emscripten编译器有一些问题。
编译器是否位于:
emscripten/emsdk/clang/e1.38.30_64bit/clang++
emscripten/emsdk/clang/e1.38.30_64bit/clang
<>我注意到,如果在qtC造饰者> >工具包>编译器中使用<代码>添加/代码>,我选择<代码>添加> > WebBaseMule> C <代码>,它在<代码>手册> > C++ > > Emscripten Compiler < /代码>中生成新条目,而不在<代码>手册> > > > EXPROTEN编译器< />代码>中。这是个问题吗
编辑
以下是“我的编译器”页面的外观:
您是否尝试在“工具包”选项卡中使用此值设置编译器
编译器:
C编译器x86 64 e1.38.27_位
C++编译器x86 64 E1.3827位B/P
Qt版本:
qmake使用webassembly构建的路径,例如webassembly二进制文件或自定义二进制文件
Qt mkspec:
艾姆斯皮滕酒店
希望这些信息有帮助,如果你遇到任何其他问题,请告诉我
您需要将.emscripten文件从emsdk目录复制到您的主页(/home/myUsername)
您需要手动修复文件中的路径(请参见下面的示例)
请注意,至少在我使用的版本(1.39.8)中,.emscripten文件是一个python脚本(可能是一个bug?)
编辑前的示例文件:
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编译器,没有错误。是的,Emscripten是一个工具链(包括编译器),需要在QtCreator中将其设置为编译器,以便创建可用的WA工具包。看看你是否还没有。谢谢,这看起来很有希望。但是,我无法选择Help>About Plugins>Device Support>WebAssembly
最近才注意到Qt兴趣列表上的这个线程。。。显然,最新的QtCreator预览版是推荐的,但不清楚这是否只适用于Mac。好的,使用最新的Qt Creator预览有点帮助。我现在可以选择插件,但我仍然无法更改工具包中的设备类型。我将在问题中添加一个屏幕截图。您是否在WA套件配置中选择了新添加的编译器?我认为你应该关闭另一个问题,并将信息集中在这里(但仅限于IMHO)。在找到这个答案之前,我已经找到了这个答案。如果您检测一下编译器,就会看到一些愚蠢的路径,上面写着emsdk_path+…--这是一个很大的暗示。