У меня есть приложение 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 несколько раз. Поэтому я бы хотел, чтобы все это было исключено и на других платформах. Надеюсь, это имеет смысл.
Спасибо!
В файле .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
Других решений пока нет …