2

Linux で実行したい Qt アプリケーションがありますが、Windows でのみ使用できる API を使用しています。API を使用するクラスがおそらく 2 つまたは 3 つあり、それらをプログラムの残りの部分と密結合させないようにしています。私は明らかに#ifdef win32あらゆる場所で多くのことを使用できますが、.pro ファイル内でそれを行うためのより多くの Qt の方法があるべきだと思います。

理想的には、qmake がシステムを検出し、それが win32 の場合は API を探すようにしたいと考えています。次に、それが見つからない場合、または別のプラットフォーム上にある場合は、ライブラリと、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 ファイルで数回使用されます。したがって、他のプラットフォームでもすべて除外したいと思います。それが理にかなっていることを願っています。

ありがとう!

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 に答える