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

Когда я компилирую свой проект 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'

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

Ответы [ 4 ]

99 голосов
/ 10 января 2013

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

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

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

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

9 голосов
/ 18 января 2011

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

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

8 голосов
/ 29 августа 2017

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

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

2 голосов
/ 12 ноября 2015

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

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

...