4 votes

La copie automatique des DLL dans qmake ne fonctionne pas

J'essaie de faire en sorte que qmake copie automatiquement les DLLs de mon programme dans le chemin cible, mais cela ne fonctionne pas. Voici la partie pertinente de mon fichier .pro :

QT_DIR = C:/Qt/5.1.1/mingw48_32/bin
MY_TARGET_DIR = $$PWD/debug
MY_LIB_FILES += QT_DIR/QT5CORED.DLL
MY_LIB_FILES += QT_DIR/QT5SERIALPORTD.DLL
MY_LIB_FILES += QT_DIR/QT5WIDGETSD.DLL
MY_LIB_FILES += QT_DIR/LIBGCC_S_DW2-1.DLL
MY_LIB_FILES += QT_DIR/LIBWINPTHREAD-1.DLL
MY_LIB_FILES += QT_DIR/LIBSTDC++-6.DLL
MY_LIB_FILES += C:/qwt-6.1.0/lib/QWTD.DLL
extra_libs.files = MY_LIB_FILES
extra_libs.path = MY_TARGET_DIR
INSTALLS += extra_libs

QMake fonctionne normalement, mais make install émet un avertissement

 Nothing to be done for 'install'.

Les DLL ne sont pas copiées dans le répertoire cible. De plus, j'ai essayé d'écrire le code de manière plus élégante, mais il semble que certaines variables QMake telles que $$QMAKE_LIBDIR soient vides. Qu'est-ce que je fais de mal ?

C'est qmake de Qt 5.1.1 .

0voto

Ignitor Points 792

Vous devez faire précéder le QT_DIR variable avec des dollars doubles pour que cela fonctionne :

QT_DIR = C:/Qt/5.1.1/mingw48_32/bin
MY_TARGET_DIR = $${PWD}/debug
MY_LIB_FILES += $${QT_DIR}/QT5CORED.DLL
MY_LIB_FILES += $${QT_DIR}/QT5SERIALPORTD.DLL
MY_LIB_FILES += $${QT_DIR}/QT5WIDGETSD.DLL
MY_LIB_FILES += $${QT_DIR}/LIBGCC_S_DW2-1.DLL
MY_LIB_FILES += $${QT_DIR}/LIBWINPTHREAD-1.DLL
MY_LIB_FILES += $${QT_DIR}/LIBSTDC++-6.DLL
MY_LIB_FILES += C:/qwt-6.1.0/lib/QWTD.DLL
extra_libs.files = MY_LIB_FILES
extra_libs.path = MY_TARGET_DIR
INSTALLS += extra_libs

Note complémentaire : Il y a un bogue dans qmake ce qui a pour effet que les fichiers contenant des caractères spéciaux (comme le caractère + au nom de libstdc++-6.dll ) ne sont pas copiés lors de l'installation sous Windows. Vérifiez mon commentaire dans le rapport de bogue pour une solution de contournement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X