私の Qt プロジェクトは、Linux 専用のライブラリにリンクしています。プロジェクトが Linux で実行されている場合、そのライブラリで定義されたタイプを使用して、イベントでシグナルを発生させたいと考えています。ただし、複雑なのは、プロジェクトも Windows でビルドする必要があることです。明らかに、このシグナルとそれをキャッチするスロットは Windows には存在しませんが、それで問題ありません。ただし、Qt の moc ツール#ifdef __linux__
がシグナルを発するコードの周りに存在することを認識できないという問題を見つけています。私のコードは次のようになります。
[SomeFile.h]
#ifdef __linux__
signals:
void SomeSignal(SomeTypeDefinedInTheLinuxLibrary);
#endif
[サムファイル.cpp]
#ifdef __linux__
emit SomeSignal(someObject);
#endif
これを g++ でコンパイルしようとすると、次のエラーが発生します。
SomeFile.cpp:(.text+0x858c): undefined reference to SomeFile::SomeSignal(SomeTypeDefinedInTheLinuxLibrary)
moc と #ifdefs をうまく連携させる方法はありますか?