17.Linux shell编程(通过Makefile看Android.mk文件)
(创建于2018/2/11 上午8:12:32) Makefile文件 //递归展开式,可以引用还没有定义的变量,展开是引用时展开 1 str1=$(str2) 2 str2=hello //直接展开式,必须引用定义好了的变量,定义之后就会展开 4 str3:=android 5 str4:=$(str3) 6 str5:=$(str1) world //变量的追加 8 str5 +=,nice to meet you //自定义函数 10 myfun=$2 $1 //将自定义函数返回值赋给一个变量 11 param=$(call myfun,20,10) 12 13 test: 14 @echo $(str1) 15 @echo $(str4) 16 @echo $(str5) 17 @echo $(param) //调用自定义函数,call是调用函数的关键字 18 @echo $(call myfun,40,30) Android.mk //调用my-dir函数,返回Android.mk文件所在的目录,my-dir是内置函数,将目录赋值给变量LOCAL_PATH, //放在第一行,地址当前所在目录 LOCAL_PATH := $(call my-dir) #ffmpeg lib //include $(CLEAR_VARS) 编译模块时,清空LOCAL_MODULE等参数,每个模块单独编译 //每次编译一个模块时,要清空上一个模块的变量信息,重新设置 include $(CLEAR_VARS) //模块名称,编译生成后的模块名 LOCAL_MODULE := avcodec //编译需要的源文件 LOCAL_SRC_FILES := libavcodec-56.so ////include file Makefile可以引入其他的Makefile文件 include $(PREBUILT_SHARED_LIBRARY) #myapp include $(CLEAR_VARS) LOCAL_MODULE := myffmpeg LOCAL_SRC_FILES := dn_ffmpeg_player.c ##-landroid参数 for native windows LOCAL_LDLIBS := -llog -landroid -ljnigraphics //需要的头文件 LOCAL_C_INCLUDES += $(LOCAL_PATH)/include/ffmpeg LOCAL_C_INCLUDES += $(LOCAL_PATH)/include/libyuv //编译需要的动态库 LOCAL_SHARED_LIBRARIES := avcodec avdevice avfilter avformat avutil postproc swresample swscale libyuv include $(BUILD_SHARED_LIBRARY)