Сигнал Qt, заключенный в ifdef

Мой проект Qt связан с библиотекой, предназначенной только для Linux. Когда проект запускается под Linux, я хочу, чтобы сигнал запускался для события с использованием типа, определенного в этой библиотеке. Однако у меня есть сложность, заключающаяся в том, что проект также должен быть построен в Windows. Очевидно, что этот сигнал и слот, который его ловит, не существовали бы в Windows, и это нормально. Однако я нахожу проблемы с Qt ' Инструмент moc не может распознать существование #ifdef __linux __ вокруг кода, излучающего сигнал. Мой код выглядит так:

[SomeFile.h]

#ifdef __linux__
signals:
  void SomeSignal(SomeTypeDefinedInTheLinuxLibrary);
#endif

[SomeFile.cpp]

#ifdef __linux__
  emit SomeSignal(someObject);
#endif

Когда я пытаюсь скомпилировать это с помощью g ++, я получаю сообщение об ошибке: SomeFile.cpp :(. Text + 0x858c): undefined ссылка на SomeFile :: SomeSignal (SomeTypeDefinedInTheLinuxLibrary)

Есть идеи, как заставить moc и #ifdefs работать вместе?

5
задан Dave McClelland 22 November 2010 в 14:38
поделиться