avviso del compilatore Qt: ignorando i comandi per target / ignorando i vecchi comandi per la destinazione
Domanda
Quando sto compilando il mio progetto Qt per Windows ricevo questi 2 avvertenze:
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'
Presumo che indicano qualche problema con il mio progetto di configurazione, qual è il problema e come posso risolvere il problema?
Soluzione
ho ottenuto lo stesso errore una volta, forse causa del problema è diverso, ma scriverò comunque. Nel mio file * .pro, è stato come:
SOURCES += main.cpp\
mainwindow.cpp\
serialHelper.cpp \
serialHelper.cpp
HEADERS += mainwindow.h\
+= serialHelper.h \
serialHelper.h \
typeDefinitions.h
cpp e file di intestazione si ripeteva. Cancello la ripetizione comprende e problema risolto per me.
Altri suggerimenti
make clean
e make
quindi dovrebbe risolvere questo problema. :). (Oppure fare clic destro sul progetto in Qt Creator -> Pulire e quindi fare clic destro sul progetto in Qt Creator -> Ricostruisci)
Se non funziona, eliminare manualmente il makefile e la ricostruzione quindi progetto.
In molti casi, questo errore è di QMake solo mettendo tutti i file oggetto in una cartella flat nella directory di compilazione, che poi provoca problemi se due file di origine hanno lo stesso nome, anche se potrebbero essere in diverse cartelle . Come ad esempio
SOURCES += foo.cpp
SOURCES += bar.cpp
SOURCES += bla/foo.cpp
SOURCES += bla/bar.cpp
In questo caso sarebbe QMake lamentarsi sia foo.o e bar.o.
La soluzione a questo problema è quello di aggiungere
CONFIG += object_parallel_to_source
per il file .pro che causerà la cartella build rispecchiano la gerarchia di cartelle dell'albero dei sorgenti. Non capisco perché questo non è il default.
Il problema e la soluzione sono stati precedentemente sottolineato qui ma non nel contesto del messaggio di avviso discusso in questa discussione .
Ho avuto lo stesso problema, come pure - Makefile incluso lo stesso cpp e .h file due volte, e stava dando me Multiple definition of <class/function> first defined here
errori.
Si scopre che i file cpp e .h in questione sono stati già aggiunti come qwtfunctions, oltre ad essere in file * .pro. Così controllare qwtfunctions pure se nessuna delle risposte di cui sopra ha funzionato per voi.