讨论完LOCAL_PATH,我们紧接着来看看LOCAL_SRC_FILES。
一、LOCAL_SRC_FILES
LOCAL_SRC_FILES := acp.cLOCAL_SRC_FILES变量的意思见名知意,很明显是用来记录当前模块的源文件列表的一个变量。
这里是他的赋值,我们下面来看看他的使用的地方。在build/core/binary.mk中有如下的部分:
########################################################### ## C: Compile .c files to .o. ########################################################### c_arm_sources := $(patsubst %.c.arm,%.c,$(filter %.c.arm,$(LOCAL_SRC_FILES))) c_arm_objects := $(addprefix $(intermediates)/,$(c_arm_sources:.c=.o)) c_normal_sources := $(filter %.c,$(LOCAL_SRC_FILES)) c_normal_objects := $(addprefix $(intermediates)/,$(c_normal_sources:.c=.o)) $(c_arm_objects): PRIVATE_ARM_MODE := $(arm_objects_mode) $(c_arm_objects): PRIVATE_ARM_CFLAGS := $(arm_objects_cflags) $(c_normal_objects): PRIVATE_ARM_MODE := $(normal_objects_mode) $(c_normal_objects): PRIVATE_ARM_CFLAGS := $(normal_objects_cflags) c_objects := $(c_arm_objects) $(c_normal_objects) ifneq ($(strip $(c_objects)),) $(c_objects): $(intermediates)/%.o: $(TOPDIR)$(LOCAL_PATH)/%.c $(yacc_cpps) $(proto_generated_headers) $(LOCAL_ADDITIONAL_DEPENDENCIES) $(transform-$(PRIVATE_HOST)c-to-o) -include $(c_objects:%.o=%.P) endif
分析上面的代码,
1. 我们首先从LOCAL_SRC_FILES中得到所有的C文件
c_normal_sources value acp.c
2. 定义一个变量,c_normal_objects,用来表示生成的.o文件的路径
c_normal_objects value out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/acp.o
其中,$(c_normal_sources:.c=.o)会返回acp.o,那么c_normal_objects的关键就是$(intermediates)变量
二、intermediates