QT_ANDROID_MULTI_ABI_FORWARD_VARS
允许在多 ABI 构建 中共享 CMake 变量。
此变量自 Qt 6.4.2 版本引入。
注意: 此变量为技术预览,可能在未来的版本中发生变化。
注意: 仅当针对 Android 平台时使用此变量。
允许指定要从一个 ABI 项目转发到 ABI 特定子项目的 CMake 变量列表。由于 Multi-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 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 或更高版本时,自动执行最终化。
© 2024 The Qt Company Ltd. 本文档中包含的文档贡献是各自所有者的版权。此处提供的文档根据 Free Software Foundation 发布的 GNU 自由文档许可协议版本 1.3 的条款进行许可。Qt 和相应的标志是 The Qt Company Ltd. 在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。