业务场景:针对多渠道每个Flavor下面可能使用编译不同模块的NativeLib,这里可以通过gradle构建是指定一些自定义参数传递给cmakeList.txt 在cmake这中进行控制。
gradle多渠道配置:
productFlavors {
Flavor1 {
...
...
externalNativeBuild {
cmake {
arguments "-DFLAVOR_NAME=FB"
abiFilters "armeabi","armeabi-v7a"
}
}
}
Flavor2 {
...
...
externalNativeBuild {
cmake {
arguments "-DFLAVOR_NAME=YH"
abiFilters "armeabi","armeabi-v7a"
}
}
}
}
这里指定自定义参数格式为: -D+name=value形式。如上,-DFLAVOR_NAME=YH
在CmakeList.txt中获取使用该参数:${FLAVOR_NAME}即可获取
如果是在cmake中的if条件语句中可直接使用,不需要加 ${},如:
一般使用获取:
#打印数据便于调试
MESSAGE("----FLAVOR_NAME="${FLAVOR_NAME}
在if中使用获取:
if (FLAVOR_NAME STREQUAL YH)
MESSAGE("---FLAVOR_NAME STREQUAL MMT---haha-")
.....
.....接下来做不同的业务
endif()