2016-04-11 4 views
0

haben folgende qt pro Datei:installieren dll in 2 Ziele (Pfade) mit qmake

CONFIG  += plugin debug_and_release 
TARGET  = $$qtLibraryTarget(WidgetBoxPlugin) 
TEMPLATE = lib 
... 
target.path = $$[QT_INSTALL_PLUGINS]/designer 
creator_target.path = $$[QTCREATOR_BIN_PATH]/plugins/designer 
INSTALLS += target creator_target 

Und führte DLL-Datei in zwei Pfade kopiert wurde (Targets). Jetzt funktioniert es aus irgendeinem Grund nicht: qmake generiert kein Skript zum Installieren (Kopieren) für das zweite Ziel (QTCREATOR_BIN_PATH ist gesetzt). Wie schreibe ich 2nd install korrekt, damit dll in 2 Destinationen installiert wird?

Voll Projekt: https://github.com/akontsevich/WidgetBox

Antwort

0

Got Vorschlag hier: https://forum.qt.io/topic/66090/qmake-does-not-generate-2nd-install-target-in-makefile/3#

Dokumentation nach (https://wiki.qt.io/QMake-top-level-srcdir-and-builddir) korrekt Build dir Makro ist $$ OUT_PWD, so richtig Installationscode ist:

target.path = $$[QT_INSTALL_PLUGINS]/designer 

creator_target.name = Copying the target dll to Qt Creator plugins directory as well 
creator_target.input = $qtLbraryTarget(WidgetBoxPlugin) 
creator_target.path = $$(QTCREATOR_BIN_PATH)/plugins/designer 
creator_target.CONFIG += no_check_exist 
creator_target.output = WidgetBoxPlugin.dll 
creator_target.files = $$OUT_PWD/release/WidgetBoxPlugin.dll 
QMAKE_EXTRA_COMPILERS += creator_target 

INSTALLS += target creator_target 

nur seltsam, warum Klammern [] nur für das Ziel arbeiten und() sind für creator_target notwendig?

1

Wie eine Kopie meines Projektziel schreiben richtig so dll in 2 Destinationen installiert werden?

Sie können versuchen, einen neuen Zielpfad mit QMAKE_EXTRA_COMPILERS zu erstellen:

http://blog.qt.io/blog/2008/04/16/the-power-of-qmake/

creator_target.name = Copying the target dll to Qt Creator plugins directory as well 
creator_target.input = $$qtLibraryTarget(WidgetBoxPlugin) 
creator_target.path = $$[QTCREATOR_BIN_PATH]/plugins/designer 
creator_target.CONFIG += target_predeps no_link 
creator_target.output = WidgetBoxPlugin.dll 
QMAKE_EXTRA_COMPILERS += creator_target 

INSTALLS += creator_target 

Die andere und vielleicht einfachere Art und Weise zu kopieren Post-Build immer zu versuchen, ist aber mit xcopy/D/Y Befehlssyntax können wir vermeiden, zu kopieren, wenn Ziel existiert:

QMAKE_POST_LINK += xcopy /d/y $$qtLibraryTarget(WidgetBoxPlugin) ${QTCREATOR_BIN_PATH}/plugins/designer 

Die pro blem mit diesem Befehl der Eingabe korrekt zu entkommen ist es noch mehr ist weithin bekannt hier auf SO: https://stackoverflow.com/search?q=QMAKE_POST_LINK

+0

Ich habe viele Dinge ausprobiert. Brauche brauchbares Beispiel, nicht Raten. –

+0

Я тоже пробую разные способы решения проблемы, но уменя нет вашего проекта. С обоими способами довольно просто всё. ,то то, что я лично делаю для решения проблемы. – AlexanderVX

+0

Sie können mein Projekt hier aussehen: https://github.com/akontsevich/widgetBox dachte, Pro Content ist genug. –