2012-12-20 2 views
2

리눅스에서 실행하고 싶은 Qt 애플리케이션이 있지만 Windows에서만 사용할 수있는 API를 사용합니다. API를 사용하는 2 ~ 3 개의 클래스가있을 수 있으며 나머지 프로그램과 긴밀하게 연결하지 않으려 고 시도했습니다. 분명히 많은 곳에서 #ifdef win32을 사용할 수 있지만 .pro 파일 내에서 더 많은 Qt 방식을 사용해야한다고 생각합니다.플랫폼 기반의 Qt에서 특정 파일을 제외하는 방법

qmake가 시스템을 감지하고 API가 win32이면 이상적입니다. 그런 다음 찾을 수 없거나 다른 플랫폼에있는 경우 라이브러리 및 API의 헤더가 포함 된 모든 클래스를 제외하십시오. 다음 win32owc

private: 
    Win32OnlyWrapperClass* win32owc; 

과 :

MainWindow.h에서 또한
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" 

내가 좋아하는 뭔가를

In.pro 파일 내가 지금 가지고 : 여기

무슨 뜻인지의 예 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

관련 문제