我有一个Qt应用程序,我想在Linux上运行,但它使用的API只能在Windows上运行。可能有2或3个类使用API,我试图不将它们与程序的其余部分紧密结合。我显然可以在整个地方使用很多#ifdef win32
,但我相信在.pro文件中应该有更多的Qt方式。
理想情况下,我希望qmake检测系统并查找API,如果它是win32。然后,如果它找不到它或它在不同的平台上,则排除库和包含API标头的所有类。
这是我的意思的一个例子:
In.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;
然后在cpp文件中使用win32owc几次。所以我希望所有这些都被排除在其他平台之外。希望它有意义。
谢谢!
答案 0 :(得分:3)
在.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