关于Android.mk 编译时报unknown target的一些know how

总结一下最近工作中的一些konw how:


 

e.g. 如果目录是如下结构:

external

   | ----- project

              |---- Android.mk

              | --- dirA

      |----Android.mk (module A)

      |--- src.cpp

这种情况下,直接在croot下 make  moduleA是ok的;

然后我试着注释掉project目录下的Android.mk中的内容,

include $(call all-subdir-makefiles)

继续make moduleA, 这个时候就会报unknown target. 我最早期的认知是,需要在project中include指定目录才行,这里也似乎映证了这一点,可是并不是这样的。

当我试着删掉project/Andorid.mk或者换个名字的时候,然后再去make moduleA, 就会发现又可以make成功了。也就是说下面的结构是ok的

external

   | ----- project

              |---- Android.mk

              | --- dirA

      |----Android.mk (module A)

      |--- src.cpp

那么原因是什么呢?

我认为是这样的逻辑,Android的编译系统认为,只要父目录中存在Android.mk, 则忽略其子目录中的Android.mk, make的时候根据父目录的指示去include, 这样可以加快一定的速度,因为可能并不是每个

子目录下的Android.mk都需要make. 所以一旦我只是注释内容,不删掉父目录的Android.mk, 我就会丢掉所有子目录的makefile被include的机会,也就是为什么最后会报unknown target.

一旦我删除了父目录中的Android.mk, 子目录就会被Android的编译系统所解析,无论是mma还是make都是可以的,p.s., 和 是否把这个target加在device.mk中也是无关的

 

posted on   疾速瓜牛  阅读(1588)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示