使用静态 qmake 使用 QT Widget 插件

Posted

技术标签:

【中文标题】使用静态 qmake 使用 QT Widget 插件【英文标题】:Use a QT Widget plugin using static qmake 【发布时间】:2018-09-10 18:20:57 【问题描述】:

我使用 Qled 小部件插件,使用带有 Qt VS Tools 扩展和 QT 5.6 版(由 QT 预编译提供的版本)的 Visual Studio 2017 构建了一个 QT GUI 应用程序。

使用这个默认的动态 Qt 版本,应用程序可以与小部件一起正常运行,我没有任何问题。

但是现在,我想构建相同的应用程序,但是是静态的,以便在没有依赖关系的情况下使用。 因此,我使用 -static 参数从源代码构建了 QT 5.6,更准确地说,我遵循 this blog's guide。这里开始出现问题:

    我尝试使用静态 qmake 重建小部件插件,但出现此错误:“项目错误:QT 中的未知模块:设计器” 我尝试使用动态 qmake 编译的插件,令人惊讶的是,它构建成功但 GUI 应用程序根本没有打开。

值得一提的是,我可以使用 qmake 静态构建来使用和构建一个简单的默认应用程序。

我认为我需要添加 Qt 设计器模块,但我不知道该怎么做,我什至尝试在没有“-nomake 工具”参数的情况下重建 qmake,但在构建插件时遇到了同样的错误。

【问题讨论】:

只是不要构建插件,你不需要它。只需将 qrc 文件以及实际的小部件 *.cpp 和 *.h 文件添加到您的项目中 请注意它是 GPL 软件。因此,如果您将您的程序提供给其他人,那么您也需要在他们询问时将您的应用程序的源代码提供给他们。 @PeterT 但是如果我这样做了,我就不能在 QTDesigner 上使用该插件,或者是否有任何解决方法? 在设计时使用动态链接插件。这只是用来为 *.ui 文件生成 xml。这与你最终编译的内容没有任何关系。 只修复链接,删除项目内*.h文件中的QDESIGNER_WIDGET_EXPORT 【参考方案1】:

只是不要构建插件,你不需要它。只需将 qrc 文件以及实际的小部件 *.cpp 和 *.h 文件添加到您的项目中

修复链接,删除项目内 *.h 文件中的 QDESIGNER_WIDGET_EXPORT

感谢@PeterT,这条评论解决了我的问题

【讨论】:

以上是关于使用静态 qmake 使用 QT Widget 插件的主要内容,如果未能解决你的问题,请参考以下文章

Coverity 工具静态扫描 QT 项目实践

QT静态库静态编译

Qt Creator 怎样设置才能实现静态编译

Qt creator 如何设置静态编译

QT 5.5.0 怎么设置才能实现静态编译

Qt中 .pro 文件和 .pri 文件简介