AOSP构建系统如何产生.rsp文件,如何获取?

How does AOSP build system produce .rsp files and how to get them?

根据 How does AOSP 9.0 build system link the executable? and What does @ mean in this clang command in AOSP build log? ,当 linking 模块时,AOSP 似乎会生成一个 .rsp 文件,其中包含模块需要的所有 obj 文件,并将文件名作为参数传递到 link 命令,例如:

prebuilts/clang/host/linux-x86/clang-4691093/bin/clang++ /OpenSource/Build/Android/9.0.0_r30/soong/.intermediates/bionic/libc/crtbegin_so/android_x86_64_core/crtbegin_so.o @/OpenSource/Build/Android/9.0.0_r30/soong/.intermediates/frameworks/base/libs/hwui/libhwui/android_x86_64_core_shared/libhwui.so.rsp ......

但是 .rsp 文件似乎在构建后被删除了。

问题来了,这些文件是如何生成的,如何获取这些文件的?这可能需要学习和修改构建脚本,这对我来说是遥不可及的。

也许有适合您的答案,请阅读 ninja 构建手册,在提到的手册 .rsp 文件中。

https://ninja-build.org/manual.html

以下是我抄出来的信息


rsp 文件,rspfile_content 如果存在(两者),Ninja 将为给定命令使用响应文件,即在调用命令之前将所选字符串 (rspfile_content) 写入给定文件 (rspfile),并在成功执行命令后删除文件.

这在 Windows OS 上特别有用,其中命令行的最大长度受到限制,必须使用响应文件。