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 ,它们会影响项目配置:
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 多 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 或更高版本中,终结操作会自动进行。
© 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.