Android build에서 지금 mk파일을 보고 있습니다.
shell을 검색해가면서 보고 있는데 이해가 잘 되지 몇가지 않아서 질문 드립니다.
Android에서 .java 컴파일 하는걸 보면 .mk 파일에서
all-java-files-under or all-subdir-java-files 으로 컴파일 하는걸 확인할 수 있습니다.
정의를 확인해보니
-----------------------------------------------------------
define all-java-files-under
$(patsubst ./%,%,
$(shell cd $(LOCAL_PATH) ;
find $(1) -name "*.java" -and -not -name ".*")
)
endef
------------------------------------------------------------
define all-subdir-java-files
$(call all-java-files-under,.)
endef
-----------------------------------------------------------
으로 확인해 볼 수 있었습니다.
all-java-files-under을 해석해보면 LOCAL_PATH로 이동후 그 아래있는 .java파일만 검색하는게 맞는나요??
$(patsubst ./%,%, 이건 어떻게 해석해야하는건가요??
find $(1) 는 멀 의미하는건가요???
이걸 Pakeage에서 확인해보면
LOCAL_SRC_FILES := $(call all-java-files-under, src)이렇게 나오는데 src는 먼가요??
혹시 src가
a.java
b.java
처럼 파일 목록이 저장되어 있는 문자열인가요??
,replacement
,text
) - text의 내용중에서 pattern에 맞는 내용을 replacement로 치환
fine $(1)에서 $(1)은 첫번째 인자를 말합니다.
즉 LOCAL_SRC_FILES := $(call all-java-files-under, src) <- 이부분에서
src가 첫번째 인자이므로
find src -name "*.java" -and -not -name ".*") <- 요런식으로 치환됩니다.