【发布时间】:2012-07-27 23:43:18
【问题描述】:
我正在构建一个定制的 Android 系统 (JellyBean)。
我有一个项目(来自上游),其中包含一个 .tar 文件,该文件应在构建时解压缩,其内容应复制到生成的目录树中的某个位置。 我应该如何构建 makefile 来做到这一点?
我尝试了以下方法:
1) 使用 un-tar 指令并使用“PRODUCT_COPY_FILES += ...”编写 Android.mk(在带有 tar 的 git 中)
这不起作用,因为 PRODUCT_COPY_FILES 不能在 Android.mk 中使用
2) 使用 untar 指令和 AndroidProducts.mk 中包含的一些产品定义 mk 文件编写 Android.mk,其中包含“PRODUCT_COPY_FILES += ...”
这不起作用,因为解压缩发生在“PRODUCT_COPY_FILES += (ls /untared/dir/*)”之后,因此 PRODUCT_COPY_FILES 结果为空。
3) 编写产品定义 mk 文件解压缩,然后 "PRODUCT_COPY_FILES += ..."
这可行,但不是很好,因为构建系统在多个位置包含此文件,并且 untar 发生了很多次(~10),这会减慢构建速度并且不太好......
【问题讨论】:
-
definition.mk递归调用android.mk怎么样?或者如果android.mk必须是主makefile,将其解压,然后递归调用secondary.mk(它将执行PRODUCT_COPY_FILES,然后执行所有实际工作)? -
嗯,你能详细说明一下吗?我相信,我还没明白......你在“definition.mk”下是什么意思?和“递归” - 这是否意味着有东西称它为自我?你怎么“打电话”?
-
我会回答,但可能有更简单的方法。您是否可以控制对
PRODUCT_COPY_FILES的初始分配? -
嗯。你的意思是初始分配? '=' 而不是 '+=' 的地方?比方说,我有所有的来源,但它们来自上游,我应该尽量减少我改变的 git 的数量......
-
是的,我就是这个意思。是
=还是:=?
标签: android makefile build tar android-source