如何正确构建 Qt 插件
How to properly build Qt plugins
我有一个 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
它不是在源文件夹的上一级构建目录,而是将 build-basictools-Desktop_Qt_5_8_0_GCC_64bit-Debug 放入源文件夹。为什么要这样做?
还值得注意的是,我在构建后收到以下消息警告:
:-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 Creator 4.2.1
Based on Qt 5.8.0 (GCC 5.3.1 20160406 (Red Hat 5.3.1-6), 64 bit)
Built on Jan 20 2017 01:20:15
您可以在 QtCreator 中设置构建目录,方法是进入 "Projects"(左窗格中带有扳手的按钮),然后为您的配置选择 "Build"。页面顶部将有一个 "Build directory" 字段。在您的情况下,您可能应该 check/uncheck 为其中一个项目选中 "shadow build" 复选框。
现在,说到那个警告,事实上 qmake 并不关心你的构建目录到底在哪里,你的项目应该构建得很好。显然有某种错误导致了该警告的引入(您可以查看 here 作为参考)。我不知道它是否仍然相关,但就我个人而言,我在构建带有该警告的项目时从未遇到过任何问题。
我有一个 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
它不是在源文件夹的上一级构建目录,而是将 build-basictools-Desktop_Qt_5_8_0_GCC_64bit-Debug 放入源文件夹。为什么要这样做?
还值得注意的是,我在构建后收到以下消息警告:
:-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 Creator 4.2.1 Based on Qt 5.8.0 (GCC 5.3.1 20160406 (Red Hat 5.3.1-6), 64 bit)
Built on Jan 20 2017 01:20:15
您可以在 QtCreator 中设置构建目录,方法是进入 "Projects"(左窗格中带有扳手的按钮),然后为您的配置选择 "Build"。页面顶部将有一个 "Build directory" 字段。在您的情况下,您可能应该 check/uncheck 为其中一个项目选中 "shadow build" 复选框。
现在,说到那个警告,事实上 qmake 并不关心你的构建目录到底在哪里,你的项目应该构建得很好。显然有某种错误导致了该警告的引入(您可以查看 here 作为参考)。我不知道它是否仍然相关,但就我个人而言,我在构建带有该警告的项目时从未遇到过任何问题。