11

QtCreator (2.7.2) + QT (5.1.0) を使用して、デスクトップ (Linux) とモバイル (Android) の両方のプラットフォームで実行されるアプリケーションを構築しようとしています。

これを実現するには、ターゲット プラットフォームに応じてさまざまなビルド済みライブラリを使用する必要があります。.pro ファイルでこれを指定するにはどうすればよいですか?

ウィザードは、次のようなプラットフォームの選択肢として linux/mac/windows のみを提供します

unix:!mac {
message("* Using settings for Unix/Linux.")
LIBS += -L/path/to/linux/libs
}

私はもう試した

android { 
message("* Using settings for Android.")
LIBS += -L/path/to/android/libs
}

ただし、両方のビルド ターゲットを使用すると、unix:!mac実行/評価されるもののみが取得されます。

だから私の質問は: .pro ファイルでビルド ターゲット (現在 QtCreator では "Kits" と呼ばれる) を検出し、それに応じてライブラリ定義を変更する方法は?

これまでのところ、プラットフォーム (FOR ではなく ON で構築しているプラ​​ットフォームのようです) またはビルド バリアント RELEASE/DEBUG を指定する方法しかわかりませんでした。私が見つけた他のことはLIB+=、のようにターゲットプラットフォームを前に付ける必要があると言いますwin32:LIB+=。しかし、繰り返しますが、これは では機能しませんandroid。プラットフォームに間違った構文を使用している可能性があります (arm-v7 の Android 4.2)。

4

2 に答える 2

22

これは私にとってはうまくいきます(Qt 5.3.2)

linux:!android {
    message("* Using settings for Unix/Linux.")
    LIBS += -L/path/to/linux/libs
}

android { 
    message("* Using settings for Android.")
    LIBS += -L/path/to/android/libs
}
于 2014-10-29T00:13:20.423 に答える
6

私はこれを .pro ファイルで使用しています。

unix:!macx:
{
    android:
    {
        INCLUDEPATH += "/usr/lib/boost/boost_1_47_0" \
                       inkscape
    }
    !android:
    {
        INCLUDEPATH += $$(BOOST_PATH) \
                    inkscape
    }
}
macx:
{
    INCLUDEPATH += "../../../../boost_1_54_0" \#$$(BOOST_PATH) \
                    inkscape
}
于 2013-09-25T21:06:58.850 に答える