【问题标题】:How to exclude certain files in Qt based on a platform如何基于平台排除Qt中的某些文件
【发布时间】:2012-12-20 19:57:26
【问题描述】:

我有一个想在 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。所以我也希望在其他平台上排除所有这些。希望有道理。

谢谢!

【问题讨论】:

    标签: c++ qt cross-platform qmake


    【解决方案1】:

    在 .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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      相关资源
      最近更新 更多