如何在Android externalNativeBuild CMake中传递构建时参数(如-j)?
在Android Gradle中通过externalNativeBuild传递CMake构建阶段的-j参数
要给CMake构建阶段(对应cmake --build . -- -j里的原生构建参数)传递-j这类并行编译参数,不能用arguments字段(它仅用于CMake配置阶段的参数,比如-DCMAKE_*系列),需要使用buildCommandArgs配置项:
- 在模块级
build.gradle的externalNativeBuild->cmake块中添加buildCommandArgs,直接指定-j或带线程数的-jN(比如-j8):
android { // 其他Android配置项... externalNativeBuild { cmake { path "CMakeLists.txt" // 配置阶段参数(示例) arguments "-DCMAKE_BUILD_TYPE=Release" // 传递给ninja/Makefile的构建阶段参数 buildCommandArgs "-j8" } } }
- 若想自动匹配当前设备的CPU核心数,可借助Gradle的API动态设置:
buildCommandArgs "-j${Runtime.runtime.availableProcessors()}"
buildCommandArgs的作用就是将参数传递到cmake --build命令中--之后的位置,直接交给ninja或Unix Makefile执行,实现并行加速编译的效果。
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

