android.mk文件语法总结

LOCAL_PATH := $(call my-dir) //指定本地路径,通常是android.mk文件所在路径


    include $(CLEAR_VARS) //这两行必须要


    LOCAL_MODULE    := OgreGLES2Sample //指定模块名,会生成libOgreGLES2Sample.so

    LOCAL_MODULE_FILENAME :=OgreGLES2Sample //这样的话,模块名字会变成OgreGLES2Sample.so


    LOCAL_PATH := ./jni //指定了本地路径的值,. 为build.xml文件所在的路径


在本文件中出现的" . "路径都值build.xml文件所在的路径






//下面这个与库文件相关,指定需要哪些库文件,以及库文件所在的路径


    LOCAL_LDLIBS := -landroid -lc -lm -ldl -llog -lEGL -lGLESv2 //指定需要哪些附加库文件


    LOCAL_LDLIBS += -L$(LOCAL_PATH)/../../../Ogre/lib/armeabi-v7a \ L$(LOCAL_PATH)/../../../Dependencies/lib/armeabi-v7a
 //大写的-L表示附加库路径


    LOCAL_LDLIBS += -lzzip -lz -lFreeImage -lfreetype -lOIS -lmesa -lglsl_optimizer
$(LOCAL_PATH)/../../../Dependencies/lib/armeabi-v7a/libsupc++.a
$(LOCAL_PATH)/../../../Dependencies/lib/armeabi-v7a/libstdc++.a 
./obj/local/armeabi-v7a/libcpufeatures.a


//看看这个居然先指定lib文件,然后指定到哪里去找这些lib文件。
最后面那一行还:“./obj/loc......”,这个 . 表示的是build.xml文件所在的路径。




    LOCAL_STATIC_LIBRARIES := android_native_app_glue cpufeatures


这个指定需要链接的外部静态库。但这个静态库文件到哪里去找呢?
在本工程的./obj目录里面找。

    LOCAL_WHOLE_STATIC_LIBRARIES :=cocos_libpng_static
这个表示后面的是库文件的完整的库名,前面没有lib前缀。 


    LOCAL_SHARED_LIBRARIES
功能同上。




LOCAL_SRC_FILES := Main.cpp //这个指要编译那些文件
注意这里面的当前路径为本mk文件所在的路径。




    $(call import-module,android/cpufeatures) 
    $(call import-module,android/native_app_glue)

import-module:
通过名字找到和include 另外一个模块的 Android.mk,这样就会编译这个mk文件。
“android/cpufeatures”这个目录是在ndk的source文件夹里面,其实是在
NDK_MODULE_PATH环境变量指定的路径里面去寻找。








    LOCAL_EXPORT_CFLAGS //为其他使用本模块的工程定义一些宏,#define XXX=X
    LOCAL_EXPORT_CPPFLAGS
    LOCAL_EXPORT_C_INCLUDES //为其他使用本模块的工程定义一些include头文件
    LOCAL_EXPORT_LDLIBS //为其他使用本模块的工程定义一些要链接的库,相当于为别人定义了
  一些LOCAL_LDLIBS,通常是定义一些系统库。














    include $(BUILD_STATIC_LIBRARY)
    include $(BUILD_SHARED_LIBRARY)
    include $(BUILD_EXECUTABLE)


/
LOCAL_PATH := $(call my-dir)//标准mk语句,指编译路径,所有mk文件第一句都是这个


/**这个模块表示引用了一个本地的静态库
include $(CLEAR_VARS) //清除各种变量,因为这些变量是静态全局的,如果清除,下次编译时又会用到这些变量造成出错
LOCAL_MODULE    := libopencore-amrnb  //本地静态库模块的名字,这个名字在下面编译jni时需要引用
LOCAL_SRC_FILES := lib/libopencore-amrnb.a //本地静态库文件地址
include $(PREBUILT_STATIC_LIBRARY)  //PREBUILT_STATIC_LIBRARY表示先build一个静态库
**/


/**这个模块表示引用了一个本地的动态链接库
include $(CLEAR_VARS) //同上 www.2cto.com
LOCAL_MODULE    := libswscale  //本地动态库模块的名字
LOCAL_SRC_FILES := lib/libswscale.so //本地动态库文件位置
include $(PREBUILT_SHARED_LIBRARY) //表示先build这个动态链接库
**/
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值