qt带qml,qt3d打包记录

新萌年年有,打包事挺多,关于qt携带部分组件导致打包后无法正常运行的解决方案.

这篇就不截图了,

打包最好是使用release模式下build出来的exe,然后你qmake是哪个套件的,就用哪个套件的打包工具和对应的那个套件qml文件夹所在目录。

打包的前提是在开发环境下能正常运行,或者你把生成的exe放对应套件的bin目录下看看能不能运行,能运行就说明是缺库的缘故。

QT本身打包工具有瑕疵,只能复制自身携带的常规组件的库,所以需要根据你所使用的库自行自行移植。也有土法子,windows上,直接在你的build_release目录下进行打包,在开始菜单下搜索对应的编译工具:比如这个Qt 6.7.2 (MinGW 11.2.0 64-bit)。

然后运行这个Qt 6.7.2 (MinGW 11.2.0 64-bit)后有个黑窗口,cd到你的build_release目录下,直接打包,此时因为是激活了这个套件的环境变量,所以不用赘写--qmldir一类的指令,

[注:cd后如果不在同一个磁盘(比如Qt 6.7.2 (MinGW 11.2.0 64-bit)在D盘,你的build_release在E盘,运行e: 回车就好了)]。

此时在该build_release目录下直接运行windeployqt.exe .\apptScene3d.exe也可以,对于Qt自身携带以外的库仍然需要自行复制。

下面是细节例子

单提exe文件到一个空白文件夹中.
搜索栏搜索打开powershell.
命令行窗口中执行命令:
F:\Qt\6.7.2\mingw_64\bin\windeployqt6.exe .\apptScene3d.exe --qmldir F:\Qt\6.7.2\mingw_64\qml
(对应版本的windeployqt.exe,当前文件夹下的exe,--qmldir变量设置前缀,qmldir路径.)
因qt自身打包工具的限制,
    设置使用到某些组件时需要手动移入对应库,和对应的plugs文件夹.(均是在该exe所使用的编译器路径下使用).
    下面以qt3d为例.
    qt3d需要移入内容:
    plugins:
        geometryloaders
        renderers
        renderplugins
        sceneparsers
    qml:
        Qt3D//因为使用到了Qt3D.
        QtQuick/Scene3D//因为使用到了Scene3D.
    dll:
        (根据使用的组件名字进行复制,在该exe所使用的编译器路径下查找,将用到的dll都复制到exe所在目录下.)
        使用了Qt3D,可以将Qtx3D的dll全部移入此处,
        Q6Concurrent.dll
        

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值