2012-12-20 57 views
2

我有一個Qt應用程序,我想在Linux上運行,但是它使用僅在Windows上可用的API。可能有2或3個類使用API​​,我試圖不將它們與程序的其餘部分緊密結合。我明顯可以在整個地方使用很多#ifdef win32,但我相信在.pro文件中應該有更多的Qt方法。如何在基於平臺的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; 

然後win32owc在cpp文件中使用了幾次。所以我希望所有這些都排除在其他平臺上。希望它是有道理的。

謝謝!

回答

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

相關問題