qt_android_multi_abi_forward_vars

マルチ ABI ビルドで CMake 変数を共有できるようにします。

この変数は Qt 6.4.2 で導入されました。

注意: この変数はテクノロジープレビューであり、将来のリリースで変更される可能性があります。

Note: この変数は、Androidプラットフォームをターゲットにしている場合にのみ使用されます。

メイン ABI プロジェクトから ABI 固有のサブプロジェクトに転送する必要がある CMake 変数のリストを指定できます。Multi-ABIプロジェクトのビルドプロセスが特殊なため、コマンドラインや他の同様の方法で指定されたCMakeキャッシュ変数を転送する汎用的な方法はありません。

この変数の典型的な使用例は、コマンドラインで指定された CMake キャッシュ変数を転送することです。例えば、プロジェクトにPROJECT_WIDE_VARIABLE1PROJECT_WIDE_VARIABLE2 という 2 つの変数があり、プロジェクトの設定に影響を与えるとします:

cmake_minimum_required(VERSION 3.18)

project(MyProject LANGUAGES CXX)

find_package(Qt6 REQUIRED COMPONENTS Core)

qt_add_executable(MyApp main.cpp)

if(PROJECT_WIDE_VARIABLE1)
    target_sources(MyApp PRIVATE sourcefile1.cpp)
endif()
if(PROJECT_WIDE_VARIABLE2)
    target_sources(MyApp PRIVATE sourcefile2.cpp)
endif()

上記のCMakeLists.txt の内容により、対応する CMake 変数をコマンドラインから設定することで、MyApp のビルド方法を制御することができます:

qt-cmake -S<source directory> -B<build directory> \
    -DPROJECT_WIDE_VARIABLE1=ON \
    -DPROJECT_WIDE_VARIABLE2=ON \
    -DQT_ANDROID_MULTI_ABI_FORWARD_VARS="PROJECT_WIDE_VARIABLE1;PROJECT_WIDE_VARIABLE2"

アプリケーションをデスクトップ用に設定する場合、PROJECT_WIDE_VARIABLE1PROJECT_WIDE_VARIABLE2 はグローバルキャッシュ変数として CMake リストとスクリプトに表示されます。Android Multi-ABI ビルドでは、ABI 固有のサブプロジェクトはメイン ABI プロジェクトからキャッシュ変数を継承しないため、これは機能しません。この問題は、QT_ANDROID_MULTI_ABI_FORWARD_VARS 変数に必要な変数のリストを渡すことで解決できます。これにより、PROJECT_WIDE_VARIABLE1PROJECT_WIDE_VARIABLE2 の両方の値が ABI-specific ビルドに伝搬されます。

この変数はプロジェクトのCMakeLists.txtで定義することもできます:

...
qt_add_executable(MyApp main.cpp)
...
if(ANDROID)
    set(QT_ANDROID_MULTI_ABI_FORWARD_VARS "PROJECT_WIDE_VARIABLE1;PROJECT_WIDE_VARIABLE2")
endif()
...

このように変数を設定することで、ABI固有のプロジェクトに常に転送される定義済みの変数セットを持つことができます。

注意: 転送はターゲットファイナライザーで行われ、qt_add_executable()が使用されたときに暗黙的に呼び出されます。CMake 3.19 以降を使用している場合、ファイナライズは自動的に行われます。

qt_finalize_target()qt_add_executable()も参照してください

©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。