Мой проект 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 работать вместе?