關於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中也是無關的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM