2011-01-18 12 views
29

Quando sto compilando il mio progetto Qt per Windows ricevo questi 2 avvertimenti:avviso del compilatore Qt: ignorando i comandi per target/ignorando i vecchi comandi per la destinazione

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 config , qual è il problema e come lo risolvo?

+0

Basta fare una costruzione pulita e questi saranno spariti. – ismail

risposta

68

Ho ricevuto lo stesso errore una volta, forse la fonte del problema è diversa 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. Cancellare le ripetizioni include e il problema risolto per me.

+5

mi hai salvato da un sacco di frustrazione – nkint

+2

Anche a me questo è successo anche su SUBDIRS. – reggie

+0

Si noti che la ripetizione può essere causata quando due file hanno lo stesso nome e sono citati in diversi file '.pri'. – Troyseph

9

make clean e quindi make dovrebbe risolvere questo problema. :) (Oppure fai clic con il pulsante destro del mouse su progetto in Qt Creator -> Pulisci, quindi fai clic con il pulsante destro del mouse sul progetto in Qt Creator -> Ricostruisci).

Se non funziona, cancella manualmente il makefile e la ricostruzione quindi il progetto.

+4

Se questo non risolve il problema, è probabile che il file mainwindow.h sia elencato più volte nella variabile HEADERS nel file .pro. –

+0

Grazie, ho scoperto di averlo elencato due volte. Come segnare la risposta come quella corretta? O dovrei semplicemente segnare il genitore? – sashoalm

2

Ho avuto lo stesso problema - Makefile ha incluso lo stesso file .cpp e .h due volte e mi ha dato errori Multiple definition of <class/function> first defined here.

Si scopre che i file .cpp e .h in questione erano già stati aggiunti come qwtfunctions, oltre che nel file * .pro. Quindi controlla anche qwtfunctions se nessuna delle risposte precedenti ha funzionato per te.

2

In molti casi questo errore è correlato a QMake semplicemente mettendo tutti i file oggetto in una cartella piatta nella directory di build, il che causa problemi se due file di origine hanno lo stesso nome, anche se potrebbero essere in diversi cartelle. Ad esempio

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

In questo caso QMake si lamenterebbe sia di foo.o che di bar.o.

La soluzione a questo problema è quello di aggiungere

CONFIG += object_parallel_to_source 

al file .pro che causerà la cartella build rispecchiano la gerarchia di cartelle dell'albero dei sorgenti. Non sono sicuro del motivo per cui questo non è l'impostazione predefinita.

Il problema e la soluzione sono stati precedentemente indicati here ma non nel contesto del messaggio di avviso discusso in questo thread.

Problemi correlati