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

sas*_*alm 48 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'
Run Code Online (Sandbox Code Playgroud)

我假设它们表明我的项目配置存在问题,问题是什么以及如何解决?

Kad*_*mir 100

我曾经遇到过同样的错误,也许你的问题来源不同但我会反正写.在我的*.pro文件中,它就像:

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

HEADERS  += mainwindow.h\
     += serialHelper.h \
serialHelper.h \
typeDefinitions.h
Run Code Online (Sandbox Code Playgroud)

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

  • 你让我免于很多挫折 (8认同)
  • 我也是这个也发生在SUBDIRS上. (3认同)
  • 请注意,当两个文件具有相同名称并且每个文件都包含在不同的`.pri`文件中时,可能会导致重复. (2认同)

rsp*_*984 10

在很多情况下,此错误与QMake有关,只是将所有目标文件放在构建目录中的平面文件夹中,如果两个源文件具有相同的名称,则会导致问题,即使它们可能位于不同的文件夹中.如

SOURCES += foo.cpp
SOURCES += bar.cpp
SOURCES += bla/foo.cpp
SOURCES += bla/bar.cpp
Run Code Online (Sandbox Code Playgroud)

在这种情况下,QMake会抱怨foo.o和bar.o.

这个问题的解决方案是添加

CONFIG += object_parallel_to_source
Run Code Online (Sandbox Code Playgroud)

到.pro文件,这将导致build文件夹镜像源树的文件夹层次结构.不知道为什么这不是默认值.

之前已经在此处指出了问题和解决方案,但未在此线程中讨论的警告消息的上下文中指出.


Pal*_*mik 9

make clean然后make应该解决这个问题.:)(或者右键单击Qt Creator中的项目 - >清理,然后右键单击Qt Creator中的项目 - >重建).

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

  • 如果这不能解决问题,那么很可能在.pro文件的HEADERS变量中多次列出了mainwindow.h文件. (4认同)