Gradle产品风味中定义的CMake参数为何不生效?
问题原因及修复方案
1. CMake参数传递格式错误
你在productFlavors中给CMake传递参数时,将多个参数打包进了同一个字符串,Gradle会把它作为单个完整参数传给CMake,导致CMake无法正确解析-DVULKAN_VALIDATION_ON=TRUE这个定义,自然不会触发对应的链接逻辑。
修复后的build.gradle代码
将arguments拆分为独立的字符串元素,用逗号分隔:
productFlavors { development { dimension "PlayStore" externalNativeBuild { cmake { arguments "-DPLAY_STORE=TRUE", "-DVULKAN_VALIDATION_ON=TRUE" } } } production { dimension "PlayStore" externalNativeBuild { cmake { arguments "-DPLAY_STORE=TRUE" } } } }
2. 清理CMake缓存(关键步骤)
之前构建生成的CMake缓存会保留旧参数值,即使修改了build.gradle也可能不生效。需要执行以下操作:
- 在Android Studio中点击菜单栏的
Build > Clean Project - 接着点击
Build > Rebuild Project - 或者直接删除项目根目录下的
.cxx文件夹(该目录存放CMake构建缓存文件)
3. 验证参数传递状态(可选)
可以在CMakeLists.txt开头添加打印语句,确认参数是否被正确接收:
message("Received VULKAN_VALIDATION_ON: ${VULKAN_VALIDATION_ON}")
构建developmentDebug变体时,就能在构建日志中看到参数值,快速确认传递是否成功。
内容的提问来源于stack exchange,提问作者Bungles
相关产品推荐
相关产品推荐

