2016-10-24 7 views
0

前に定義されたマクロを展開されていませんmoc_other_file.cppの場合はTEXT NOT ADDEDが表示されます。どうすればこのバグを修正できますか? コンパイルの出力は次のようになります。Qtのmocのファイルは、#include "foo.hという" 次のコードを考えると

/foo.h:15: warning: #warning "TEXT NOT ADDED" [-Wcpp] Debug/moc_other_file.cpp:9: from moc_otherfile.cpp:9:

other_file.cpp:26: error: undefined reference to 'Foo::TEXT'

+0

'moc'は' .cpp'ファイルをそのまま処理します* - 'C'プリプロセッサを先に実行しません*。前処理の結果が 'moc'出力に影響を与える場合は、' .cpp'ファイルを前処理して結果に 'moc'を実行するようにビルド環境を調整する必要があります。 –

+0

@ G.M .: '.h'(または' .hpp')ファイルを処理していると思います。 – MSalters

+0

どうすればいいですか、私はすべてのことを行うQtのデフォルトプロジェクトファイルを持っています。 – has

答えて

1

moc_other_file.cpp、名前が言うように、other_file.cppではありません。したがって、other_file.cppBIG_DATA_MACROを定義しても、moc_other_file.cppには影響しません。

しかし、あなたはまだTEXTの定義がありません。単にそれを追加するだけです。

意見として、TEXTはかなり悪い名前です。大文字の識別子は通常、マクロに使用されます。 TEXTは、特にWindows.hで使用されるマクロです。

+0

moc_other_file.cppは、シグナルとスロットのためにQtによって自動的に生成されます。 – has

+0

だから、moc_other_file.cppにマクロを定義することはできません。 – has

+0

しかし、なぜシグナルやスロットに 'TEXT'の定義が必要でしょうか? – MSalters

関連する問題