web-dev-qa-db-fra.com

Avertissement du compilateur Qt: substitution des commandes pour la cible / ignorance des anciennes commandes pour la cible

Lorsque je compile mon projet Qt pour Windows, je reçois ces 2 avertissements:

Makefile.Debug:109: warning: overriding commands for target `debug/moc_mainwindow.cpp'
Makefile.Debug:106: warning: ignoring old commands for target `debug/moc_mainwindow.cpp'

Je suppose qu'ils indiquent un problème avec ma configuration de projet, quel est le problème et comment le résoudre?

49
sashoalm

J'ai eu la même erreur une fois, peut-être que la source de votre problème est différente mais j'écrirai quand même. Dans mon fichier * .pro, c'était comme:

SOURCES += main.cpp\
    mainwindow.cpp\
    serialHelper.cpp \
serialHelper.cpp

HEADERS  += mainwindow.h\
     += serialHelper.h \
serialHelper.h \
typeDefinitions.h

cpp et le fichier d'en-tête se répétaient. Je supprime les inclusions répétitives et le problème est résolu pour moi.

99
Kadir Erdem Demir

make clean puis make devrait résoudre ce problème. :) (Ou faites un clic droit sur le projet dans Qt Creator -> Nettoyer puis faites un clic droit sur le projet dans Qt Creator -> Reconstruire).

Si cela ne fonctionne pas, supprimez manuellement le makefile et la reconstruction puis projetez.

9
Palmik

Dans de nombreux cas, cette erreur est liée au fait que QMake place simplement tous les fichiers objet dans un dossier plat dans le répertoire de génération, ce qui provoque ensuite des problèmes si deux fichiers source ont le même nom, même s'ils peuvent se trouver dans des dossiers différents. Tel que

SOURCES += foo.cpp
SOURCES += bar.cpp
SOURCES += bla/foo.cpp
SOURCES += bla/bar.cpp

Dans ce cas, QMake se plaindrait à la fois de foo.o et de bar.o.

La solution à ce problème consiste à ajouter

CONFIG += object_parallel_to_source

dans le fichier .pro, ce qui entraînera le dossier de génération pour refléter la hiérarchie des dossiers de l'arborescence source. Je ne sais pas pourquoi ce n'est pas la valeur par défaut.

Le problème et la solution ont été précédemment signalés ici mais pas dans le contexte du message d'avertissement discuté dans ce fil.

9
rsp1984

J'ai également eu le même problème - Makefile comprenait deux fois le même fichier .cpp et .h et me donnait Multiple definition of <class/function> first defined here les erreurs.

Il s'avère que les fichiers .cpp et .h en question ont déjà été ajoutés en tant que fonctions qwt, en plus d'être dans le fichier * .pro. Vérifiez donc qwtfunctions si aucune des réponses ci-dessus n'a fonctionné pour vous.

2
coding_n00b