web-dev-qa-db-ja.com

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'

私は彼らが私のプロジェクト設定にいくつかの問題を示していると思います、問題は何ですか、どうすれば修正できますか?

49
sashoalm

一度同じエラーが発生しました。問題の原因が異なる可能性がありますが、とにかく書きます。私の* .proファイルでは、次のようになりました:

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

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

cppとヘッダーファイル自体が繰り返されていました。繰り返しインクルードを削除し、問題を解決しました。

99

make cleanそしてmakeがこの問題を解決するはずです。 :)(または、Qt Creatorでプロジェクトを右クリック->クリーンアップし、Qt Creatorでプロジェクトを右クリック-> Rebuild)。

それが機能しない場合は、手動でmakefileを削除し、プロジェクトを再構築します。

9
Palmik

多くの場合、このエラーはすべてのオブジェクトファイルをビルドディレクトリのフラットフォルダーに置くだけのQMakeに関連しています。そのため、2つのソースファイルが同じ名前である場合、それらが異なるフォルダーにある場合でも問題が発生します。といった

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ファイルに。これがデフォルトではない理由がわかりません。

問題と解決策は以前指摘されていました here ですが、このスレッドで説明されている警告メッセージのコンテキストではありません。

9
rsp1984

私も同じ問題を抱えていました-Makefileに同じ.cppファイルと.hファイルが2回含まれていて、Multiple definition of <class/function> first defined hereエラー。

問題の.cppファイルと.hファイルは、*。proファイルに加えて、qwtfunctionsとして既に追加されていることがわかります。上記の回答のいずれもうまくいかなかった場合は、qwtfunctionsも確認してください。

2
coding_n00b