2

我有一个想在 Linux 上运行的 Qt 应用程序,但它使用的 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。所以我也希望在其他平台上排除所有这些。希望这是有道理的。

谢谢!

4

1 回答 1

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"    
}

https://doc.qt.io/archives/qt-4.8/qmake-advanced-usage.html#scopes-and-conditions

于 2012-12-20T20:56:47.943 回答