Делаю плагин для designer.
У меня есть виджет, оформленный в виде dll. Он представляет собой немного модифицированную кнопку для выбора цвета.
Сначала я сделал pro-файл для плагина так:
designer.pro:TEMPLATE = lib
CONFIG += designer plugin release
TARGET = DesignerPlugin
DESTDIR = $$[QT_INSTALL_PLUGINS]/designer
DEFINES += COLORBUTTON_STATICLIB
ROOT = ..
DEPENDPATH += .
INCLUDEPATH += .
include($$ROOT/src/ColorButton/ColorButton.pri)
include($$ROOT/src/ColorButton/ColorButtonFiles.pri)
HEADERS += DesignerPlugin.h
SOURCES += DesignerPlugin.cpp
RESOURCES = DesignerPlugin.qrc
ColorButton.pri:COLORBUTTON_LIB = -lColorButton
INCLUDEPATH += $$ROOT/src/ColorButton/include
DEPENDPATH += $$ROOT/src/ColorButton/src
ColorButtonFiles.pri:HEADERS += src/ColorButton_global.h\
src/ColorButton.h
SOURCES += src/ColorButton.cpp
Все скомпилилось, плагин обнаружился дизайнером без ошибок, все ок.
Потом я решил, что это как-то не очень элегантно и решил добавлять не исходные файлы ColorButton к плагину, а саму dll.
designer.pro:TEMPLATE = lib
CONFIG += designer plugin release
TARGET = DesignerPlugin
DESTDIR = $$[QT_INSTALL_PLUGINS]/designer
#DEFINES += COLORBUTTON_STATICLIB <- закомментарил
ROOT = ..
DEPENDPATH += .
INCLUDEPATH += .
#!!! добавление библиотеки вместо исходников !!!
include($$ROOT/src/ColorButton/ColorButton.pri)
LIBS += -L$$ROOT/lib $$COLORBUTTON_LIB
HEADERS += DesignerPlugin.h
SOURCES += DesignerPlugin.cpp
RESOURCES = DesignerPlugin.qrc
Такое проект тоже скомпилился нормально, но дизайнер библиотеку не подключает... Пишет что:
The plugin DesignerPlugin.dll yses incompatible Qt library. Expected build key "Windows msvc release full-config", got "Windows msvc debug full-config"
Кинул в папку плагинов саму библиотеку ColorButton - все то же.
Вот код проекта самой библиотеки ColorButton:
ColorButton.pro:TEMPLATE = lib
CONFIG += dll
ROOT = ../..
DLLDESTDIR = $$ROOT/bin
DESTDIR = $$ROOT/lib
TARGET = ColorButton
VERSION = 1.0.0
TRANSLATIONS = ts/ColorButton_ru.ts
include(ColorButton.pri)
contains(CONFIG, staticlib) {
DEFINES += COLORBUTTON_STATICLIB
} else {
DEFINES += COLORBUTTON_SHAREDLIB
}
win32 {
DEFINES += COLORBUTTON_MAKEDLL
}
include(ColorButtonFiles.pri)