如何正确构建Qt插件

How to properly build Qt plugins

本文关键字:插件 Qt 构建 何正确      更新时间:2023-10-16

我有一个Qt项目:

TEMPLATE      = lib
CONFIG       += plugin static
QT           += widgets
INCLUDEPATH  += ../../app
HEADERS       = basictoolsplugin.h
SOURCES       = basictoolsplugin.cpp
TARGET        = $$qtLibraryTarget(pnp_basictools)
DESTDIR       = ../../plugins
# install
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/plugandpaint/plugins
INSTALLS += target
CONFIG += install_ok  # Do not cargo-cult this!
uikit: CONFIG += debug_and_release

它不是从sources文件夹构建一个更高级别的目录,而是将build-basicools-Desktop_Qt_5_8_0_GCC_64bit-Debug放入sources文件夹。它为什么要这么做?

同样值得注意的是,我在构建后收到以下消息警告:

:-1: warning: The build directory needs to be at the same level as the source directory.

下面的项目按预期进行构建,并将其build-extrafilters-Desktop_Qt_5_8_0_GCC_64bit-Debug从souces文件夹提升一级:

TEMPLATE      = lib
CONFIG       += plugin
QT           += widgets
INCLUDEPATH  += ../../app
HEADERS       = extrafiltersplugin.h
SOURCES       = extrafiltersplugin.cpp
TARGET        = $$qtLibraryTarget(pnp_extrafilters)
DESTDIR       = ../../plugins
# install
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/tools/plugandpaint/plugins
INSTALLS += target
CONFIG += install_ok  # Do not cargo-cult this!
uikit: CONFIG += debug_and_release

如何将第一个项目作为第二个项目?

更新

Kali Linux

Qt创建者4.2.1基于Qt 5.8.0(GCC 5.3.1 20160406(Red Hat 5.3.1-6),64位)

建成于2017年1月20日01:20:15

您可以在QtCreator中设置构建目录,方法是进入"Projects"(左窗格中带扳手的按钮),然后为您的配置选择"build"。页面顶部会有一个"构建目录"字段。在您的情况下,您可能应该选中/取消选中其中一个项目的"影子构建"复选框。

现在,说到这个警告,实际上qmake并不真正关心您的构建目录到底在哪里,您的项目应该构建得很好。显然,有某种错误导致了警告的引入(你可以在这里查看参考资料)。我不知道它是否仍然相关,但就我个人而言,我从未在构建一个带有该警告的项目时遇到过任何困难。