QT_ANDROID_MULTI_ABI_FORWARD_VARS

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

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

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

注:この変数は 、Android プラットフォームを対象とする場合にのみ使用されます。

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

この変数の典型的な使用例は、コマンドラインで指定されたCMakeキャッシュ変数を伝播させることです。たとえば、あるプロジェクトには、プロジェクトの構成に影響を与えるPROJECT_WIDE_VARIABLE1 とPROJECT_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_VARIABLE1 およびPROJECT_WIDE_VARIABLE2 は、CMake のリストやスクリプト内でグローバルキャッシュ変数として認識されます。しかし、Android Multi-ABI ビルドでは、ABI 固有のサブプロジェクトがメイン ABI プロジェクトからキャッシュ変数を継承しないため、この方法は機能しません。 この問題は、必要な変数のリストをQT_ANDROID_MULTI_ABI_FORWARD_VARS 変数に渡すことで解決できます。これにより、PROJECT_WIDE_VARIABLE1 およびPROJECT_WIDE_VARIABLE2 の値が、ABI固有のビルドに伝播されるようになります。

この変数は、プロジェクトの 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()も参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.