You need to enable JavaScript to run this app. QT QMake出现NDK版本不匹配警告时如何强制指定NDK版本
优惠活动
大模型
产品
解决方案
定价
更多

QT QMake出现NDK版本不匹配警告时如何强制指定NDK版本

强制QMake使用21.1.6352462版本NDK的操作流程

当前警告本质是Qt Creator自动扫描识别到了SDK目录下更高版本的21.3.6528147 NDK,覆盖了自定义「华为」Kit配置的21.1版本路径,需要按三层配置逐层锁定,避免自动识别逻辑干扰:

1. 修正Qt Creator全局Kit配置

  • 打开Qt Creator「工具-选项」,进入「Devices-Android」配置页
  • 在NDK配置栏手动添加路径 C:\Users\user\AppData\Local\Android\Sdk\ndk\21.1.6352462,不要使用自动扫描匹配的21.3.6528147版本NDK
  • 切换到「Kits」配置页,找到「华为」自定义Kit,逐项核对配置:
    • C/C编译器:手动选择路径匹配21.1版本NDK的clang/clang,不要保留自动识别的21.3版本编译器路径
    • Qt版本:选择编译时绑定21.1版本NDK的Android架构Qt套件,不能选默认拉取最新NDK编译的Qt版本
    • 取消该Kit的「自动检测」选项,避免后续SDK扫描时自动覆盖已配置的NDK路径

2. 在项目级qmake配置中显式锁定NDK路径

这是强制生效的核心步骤,不受全局配置变动、自动扫描逻辑的影响:

  • 打开项目根目录的.pro文件,在顶部新增硬编码的路径配置,直接覆盖qmake的自动识别逻辑:
# 强制指定目标NDK根路径
ANDROID_NDK_ROOT = "C:/Users/user/AppData/Local/Android/Sdk/ndk/21.1.6352462"
# 显式绑定对应版本的clang编译器
QMAKE_CC = "$${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/bin/clang.exe"
QMAKE_CXX = "$${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/windows-x86_64/bin/clang++.exe"
# 绑定NDK自带的mkspec配置,避免编译参数错配
QMAKE_MKSPECS *= "$${ANDROID_NDK_ROOT}/meta/platforms/android"
  • 注意所有路径必须使用正斜杠/,不能使用Windows默认的反斜杠\,否则qmake会出现路径解析失败的问题

3. 清理旧构建缓存,避免残留路径干扰

  • 删除项目目录下所有build-*开头的构建缓存文件夹,以及根目录下的隐藏文件.qmake.stash——这个文件会永久保存上次qmake自动识别的旧NDK路径,不删除的话哪怕修改了配置,也会被缓存覆盖
  • 回到Qt Creator的项目配置页,先将当前Kit临时切换为其他任意Kit,再切回「华为」Kit,触发qmake重新生成Makefile,确认构建日志中打印的clang路径已切换为21.1版本路径,警告消失

常见踩坑提示

  • 不要仅依赖系统环境变量设置ANDROID_NDK_HOME,qmake的Android模块会优先扫描SDK目录下最高版本的NDK作为默认路径,优先级远高于系统环境变量,必须在.pro文件中显式写死路径才能实现强制锁定
  • 不需要删除SDK目录下的21.3版本NDK,只要所有配置全部指向21.1版本路径即可,避免影响其他适配高版本NDK的项目正常构建

内容的提问来源于stack exchange,提问作者Vega4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.09 08:36:02