51 votes

Avertissement du compilateur Qt : remplacement des commandes de la cible / ignorance des anciennes commandes de 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 la configuration de mon projet. Quel est le problème et comment puis-je le résoudre ?

0 votes

Il suffit de faire une construction propre et ils seront partis.

116voto

Kadir Erdem Demir Points 567

J'ai eu la même erreur une fois, peut-être la source de votre problème est différente mais je vais quand même écrire. 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. J'ai supprimé les includes qui se répétaient et le problème s'est résolu pour moi.

8 votes

Vous m'avez sauvé de beaucoup de frustration

4 votes

Moi aussi, cela s'est produit sur des SUBDIRS.

4 votes

Notez que la répétition peut être causée lorsque deux fichiers ont le même nom et sont chacun mentionnés dans des inclusions différentes. .pri des fichiers.

15voto

Rafael Spring Points 165

Dans beaucoup de cas, cette erreur est liée au fait que QMake place tous les fichiers objets dans un dossier plat dans le répertoire de construction, ce qui cause des problèmes si deux fichiers sources ont le même nom, même s'ils sont dans des dossiers différents. Par exemple

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

au fichier .pro, ce qui fera en sorte que le dossier de construction reflète la hiérarchie des dossiers de l'arbre des sources. Je ne sais pas pourquoi ce n'est pas la valeur par défaut.

Le problème et la solution ont déjà été soulignés ici mais pas dans le contexte du message d'avertissement discuté dans ce fil.

9voto

Palmik Points 1664

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

Si cela ne fonctionne pas, supprimez manuellement le makefile et reconstruisez ensuite le projet.

4 votes

Si cela ne résout pas le problème, il est probable que le fichier mainwindow.h figure plusieurs fois dans la variable HEADERS du fichier .pro.

0 votes

Merci, il s'est avéré que je l'avais vraiment listé deux fois. Comment puis-je marquer votre réponse comme étant la bonne ? Ou dois-je juste marquer le parent ?

2voto

coding_n00b Points 31

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

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

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