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)
上一篇:1.App瘦身经验总结


下一篇:在linux,windows上安装ruby on rails开发环境