Предупреждение компилятора Qt: переопределение команд для цели/игнорирование старых команд для цели

Когда я компилирую свой проект Qt для Windows, я получаю эти 2 предупреждения:

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'

Я предполагаю, что они указывают на какую-то проблему с конфигурацией моего проекта, в чем проблема и как ее исправить?


person sashoalm    schedule 18.01.2011    source источник
comment
Просто сделайте чистую сборку, и они исчезнут.   -  person ismail    schedule 18.01.2011


Ответы (4)


У меня была такая же ошибка один раз, возможно, источник вашей проблемы другой, но я все равно напишу. В моем файле *.pro это было так:

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

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

cpp и заголовочный файл повторялись. Я удаляю повторяющиеся включения, и проблема решается для меня.

person Kadir Erdem Demir    schedule 10.01.2013
comment
ты спас меня от большого разочарования - person nkint; 24.07.2013
comment
У меня тоже это произошло на SUBDIRS. - person reggie; 31.07.2014
comment
Обратите внимание, что повторение может быть вызвано тем, что два файла имеют одинаковое имя и каждый из них упоминается в разных включенных .pri файлах. - person Troyseph; 02.09.2016

Во многих случаях эта ошибка связана с тем, что QMake просто помещает все объектные файлы в плоскую папку в каталоге сборки, что затем вызывает проблемы, если два исходных файла имеют одинаковое имя, даже если они могут быть в разных папках. Такие как

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

В этом случае QMake будет жаловаться как на foo.o, так и на bar.o.

Решение этой проблемы заключается в добавлении

CONFIG += object_parallel_to_source

в файл .pro, что приведет к тому, что папка сборки будет отражать иерархию папок исходного дерева. Не уверен, почему это не по умолчанию.

Проблема и решение ранее указывались здесь, но не в контексте предупреждающего сообщения, обсуждаемого в этой теме.

person rsp1984    schedule 29.08.2017

make clean, а затем make должны решить эту проблему. :) (Или щелкните правой кнопкой мыши проект в Qt Creator -> Очистить, а затем щелкните правой кнопкой мыши проект в Qt Creator -> Перестроить).

Если это не сработает, вручную удалите make-файл и пересоберите проект.

person Palmik    schedule 18.01.2011
comment
Если это не решит проблему, вероятно, файл mainwindow.h указан более одного раза в переменной HEADERS в файле .pro. - person Caleb Huitt - cjhuitt; 21.01.2011
comment
Спасибо, оказалось, что я действительно указал его дважды. Как мне отметить ваш ответ как правильный? Или я должен просто отметить родителя? - person sashoalm; 12.02.2011

У меня тоже была такая же проблема - Makefile дважды включал один и тот же файл .cpp и .h и выдавал мне Multiple definition of <class/function> first defined here ошибки.

Оказывается, рассматриваемые файлы .cpp и .h уже были добавлены как qwtfunctions, помимо того, что они находятся в файле *.pro. Так что проверьте также qwtfunctions, если ни один из приведенных выше ответов вам не помог.

person coding_n00b    schedule 12.11.2015