Qt编译器警告:覆盖目标的命令/忽略目标的旧命令

时间:2011-01-18 09:23:44

标签: c++ qt qmake moc

当我为Windows编译我的Qt项目时,我会收到以下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 个答案:

答案 0 :(得分:96)

我有一次同样的错误,也许你的问题的来源不同但我还是会写的。 在我的* .pro文件中,它就像:

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

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

cpp和头文件正在重复。我删除了重复的包含和为我解决的问题。

答案 1 :(得分:9)

make clean然后make应解决此问题。 :)(或右键单击Qt Creator中的项目 - >清理然后右键单击Qt Creator中的项目 - >重建)。

如果它不起作用,请手动删除makefile,然后重建项目。

答案 2 :(得分:7)

在很多情况下,此错误与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文件,这将导致build文件夹镜像源树的文件夹层次结构。不知道为什么这不是默认值。

此问题和解决方案先前已经指出here,但未在此主题中讨论的警告消息的上下文中指出。

答案 3 :(得分:2)

我也有同样的问题 - Makefile包含了两次相同的.cpp和.h文件,并且给了我Multiple definition of <class/function> first defined here个错误。

事实证明,除了在* .pro文件中之外,有问题的.cpp和.h文件已经添加为qwtfunctions。因此,如果上述答案都不适合您,请检查qwtfunctions。