我们会发现在webkit源码下发现很多的css文件例如:
webkit/WebCore/css/html.css
webkit/WebCore/css/quirks.css
webkit/WebCore/css/view-source.css
webkit/WebCore/css/mediaControls.css
等等css是如何对应到源码下的那?
我们发现在 WebCore下有个
Android.derived.mk
# user agent style sheets
style_sheets := $(LOCAL_PATH)/css/html.css $(LOCAL_PATH)/css/quirks.css $(LOCAL_PATH)/css/view-source.css $(LOCAL_PATH)/css/mediaControls.css
ifeq ($(ENABLE_SVG), true)
style_sheets := $(style_sheets) $(LOCAL_PATH)/css/svg.css
endif
GEN := $(intermediates)/css/UserAgentStyleSheets.h
make_css_file_arrays := $(LOCAL_PATH)/css/make-css-file-arrays.pl
$(GEN): PRIVATE_CUSTOM_TOOL = $< $@ $(basename $@).cpp $(filter %.css,$^)
$(GEN): $(make_css_file_arrays) $(style_sheets)
$(transform-generated-source)
LOCAL_GENERATED_SOURCES += $(GEN) $(GEN:%.h=%.cpp)
这个文件下存在这么一个脚本
脚本的逻辑内容很简单,其中最关键的地方就是css/make-css-file-arrays.pl这个脚本
执行这个脚本就是生成/UserAgentStyleSheets.h和/UserAgentStyleSheets.cpp文件
然后在编译的时候把这个cpp文件编译进去就可以使用了。
基于此所以每当你修改对应的css文件那么对应到源代码生成所以编译的时间也就比较长,原理就在上面说的。