Подтвердить что ты не робот

Предупреждение компилятора 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'

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

4b9b3361

Ответ 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, который заставит папку сборки отображать иерархию папок исходного дерева. Не уверен, почему это не по умолчанию.

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