Предупреждение компилятора 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'
Я предполагаю, что они указывают на какую -то проблему с конфигурацией моего проекта, в чем проблема и как ее исправить?
Решение
Однажды я получил ту же ошибку, возможно, источник вашей проблемы отличается, но я все равно напишу. В моем файле *.pro это было похоже на:
SOURCES += main.cpp\
mainwindow.cpp\
serialHelper.cpp \
serialHelper.cpp
HEADERS += mainwindow.h\
+= serialHelper.h \
serialHelper.h \
typeDefinitions.h
Файл CPP и заголовок повторялись. Я удаляю повторение, включающую и решенную проблему для меня.
Другие советы
make clean
а потом make
должен решить эту проблему. :) (или щелкните правой кнопкой мыши на проекте в QT Creator -> Clean, а затем щелкните правой кнопкой мыши на проекте в QT Creator -> Rebuild).
Если это не работает, вручную удалите Makefile и Rebuild, затем проект.
Во многих случаях эта ошибка связана с 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, который заставит папку сборки отражать иерархию папки исходного дерева. Не уверен, почему это не по умолчанию.
Проблема и решение были указаны ранее здесь но не в контексте предупреждающего сообщения, обсуждаемого в этой теме.
У меня тоже была такая же проблема - Makefile включал один и тот же файл .cpp и .h дважды, и я дал мне Multiple definition of <class/function> first defined here
ошибки.
Оказывается, файлы .CPP и. Так что проверьте QWTFunctions, если ни один из вышеперечисленных ответов не снялся для вас.