2011-07-04 20 views
7

Chciałbym zapytać, co powinno być napisane w pliku Android.mk, aby wywołać pliki mk w podkatalogach bieżącego katalogu.

przykład:
/packages/Android.mk
/package/groupA/Android.mk
/packages/groupA/AppA/Android.mk
/packages/groupA/AppB/Android.mk
Czytanie plików Android.mk w podkatalogach rekursywnie

Wiem, że za pomocą include $(call all-subdir-makefiles), plik Android.mk w bezpośrednim podkatalogu zostanie odczytany (przykład: /package/groupA/Android.mk). Jednak /packages/groupA/AppA/Android.mk i /packages/groupA/AppB/Android.mk nie będą czytane.

Zastanawiam się, czy istnieje inne makro, które wykonuje rekursywne czytanie pliku Android.mk dla wszystkich podkatalogów.

Dzięki,
artsylar

Odpowiedz

9

Najwygodniejszym rozwiązaniem jest wprowadzenie polecenia include $(call all-subdir-makefiles) również wewnątrz /package/groupA/Android.mk pliku.

Jednakże, jeśli chcesz tylko pliki mk trzeciego poziomu można użyć następującego polecenia:

include $(wildcard $(call my-dir)/*/*/Android.mk) 

I o to w pełni rekurencyjne rozwiązanie, ale opiera się na komendę find z powłoki:

include $(filter-out $(call my-dir)/Android.mk,$(shell find $(call my-dir)/ -type f -name Android.mk)) 
+0

dzięki za odpowiedź. faktycznie, mam to działa bez konieczności pisania 'include $ (call all-subdir-makefiles)' w pliku mk. Wygląda na to, że wystąpił problem w skrypcie, który odczytuje wszystkie pliki mk. Spróbuję czasem twojej odpowiedzi. Wiem, że będzie to pomocne dla innych. – artsylar