从gradle传递“ -j”参数给忍者

时间:2019-07-17 10:19:53

标签: android-studio gradle cmake ninja

在使用gradle构建Android应用时,我需要将-j参数传递给ninja。 (在Windows上)

我为什么需要这个? -我们有庞大的统一c ++文件,需要大量内存才能进行编译。目前,我没有足够的内存(约10GB可用空间)无法在8个内核上并行编译它们。因此,当内存用完时,clang失败。

我看到gradle使用cmake键运行--build,所以我尝试在其中添加我的-j1 arg。但是似乎arguments字段仅用于cmake生成,因为它不影响在构建阶段传递给cmake的命令行。

externalNativeBuild {
    cmake {
        cFlags "..."
        cppFlags "..."
        arguments "... -- -j1"
    }
}

我现在看到的唯一方法是用一些包装器将ninja替换为从那里传递-j的包装器。但这是我要使用的最后一个选项。 感谢有关如何实现这种有效方式的任何想法。

1 个答案:

答案 0 :(得分:3)

您应将CMAKE_BUILD_PARALLEL_LEVEL环境变量设置为要用于构建的并发进程数。

从cmake 3.12.4开始可用。

https://cmake.org/cmake/help/v3.12/envvar/CMAKE_BUILD_PARALLEL_LEVEL.html