Как исключить определенные файлы в Qt на основе платформы

У меня есть приложение Qt, которое я хотел бы запустить в Linux, однако оно использует API, который доступен только в Windows. Возможно, есть 2 или 3 класса, которые используют API, и я старался не связывать их с остальной частью программы. Я мог бы использовать много #ifdef win32 повсюду, но я считаю, что в файле .pro должен быть более удобный способ сделать это.

В идеале я бы хотел, чтобы qmake обнаружил систему и посмотрел на API, если это win32. Затем, если он не может найти его или находится на другой платформе, исключите библиотеку и все классы, которые включают заголовки из API.

Вот пример того, что я имею в виду:

У меня есть файл .pro

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

LIBS += "a/path/to/win32/only/lib -lwin32only

INCLUDEPATH += "a/path/to/win32/only/includes"DEPENDPATH += "a/path/to/win32/only/includes"

Также в MainWindow.h у меня есть что-то вроде:

private:
Win32OnlyWrapperClass* win32owc;

а затем win32owc используется в файле cpp несколько раз. Поэтому я бы хотел, чтобы все это было исключено и на других платформах. Надеюсь, это имеет смысл.

Спасибо!

2

Решение

В файле .pro вы можете сделать это:

win32:LIBS += "a/path/to/win32/only/lib -lwin32only

win32:INCLUDEPATH += "a/path/to/win32/only/includes"win32:DEPENDPATH += "a/path/to/win32/only/includes"

или же

win32 {
LIBS += "a/path/to/win32/only/lib -lwin32only

INCLUDEPATH += "a/path/to/win32/only/includes"DEPENDPATH += "a/path/to/win32/only/includes"}

http://doc.qt.digia.com/qt/qmake-advanced-usage.html#scopes-and-conditions

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]