在使用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
的包装器。但这是我要使用的最后一个选项。
感谢有关如何实现这种有效方式的任何想法。
答案 0 :(得分:3)
您应将CMAKE_BUILD_PARALLEL_LEVEL
环境变量设置为要用于构建的并发进程数。
从cmake 3.12.4开始可用。
https://cmake.org/cmake/help/v3.12/envvar/CMAKE_BUILD_PARALLEL_LEVEL.html