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