zoukankan      html  css  js  c++  java
  • Android-ndk中的.mk文件语法规则

    Android.mk
    -------------------------------------------------------------------------
    LOCAL_PATH := $(call my-dir)   #当前路径类似于php中的 __FILE__

    include $(CLEAR_VARS)           #清楚上次遗留的一些垃圾变量

                                       #类似于php中的 include_once('CLEAR_VARS.PHP');

    LOCAL_MODULE    := hello-jni     #该动态链接库模块的名称
    LOCAL_SRC_FILES := hello-jni.c   #需要编译的c源码

    include $(BUILD_SHARED_LIBRARY)    #包含编译所需的核心库文件

                                       #类似于php中的 include('BUILD_SHARED_LIBRARY.php');

    Application.mk
    ----------------------------------------------------------------------------
    #翻译 $(call my-dir) 当前路径的意思,也就是说这个脚本所在的路径
    APP_PROJECT_PATH := $(call my-dir)/project    #该应用程序的位置,主要是用于将生成的.so放在该工程的libs/arbeabi/下
    APP_MODULES      := hello-jni                #该模块的名称 和Android.mk中写的要一样

    out目录说明
    -----------------------------------------------------------------------------
    host这个文件时必须的,不能删除掉。
    apps可以删除掉,这个文件夹是专门用来存放编译源码时产生的临时文件的地方。如果再次生成.so
    文件出错可以清楚apps这个目录来达到清理缓存目的。但是我个人认为这个apps文件夹可以在下个版本中
    移除,因为程序员可以不必关心这个垃圾中转站。但是想了解编译过程这个是必不可少的。

    因为.mk相当于shell或者是php,所以就成他们为脚本吧。

    关于mk脚本的注意事项:
    1.所有的.mk文件必须是以ansi编码,否则会提示找不到某个变量
    2.如果注释和脚本是一行的 是以#开头(注意中文和英文的区别) 之间不能有任何的空格
      比如: 可以是LOCAL_PATH := $(call my-dir)#测试下LOCAL_PATH,不能是 LOCAL_PATH := $(call my-dir)   #测试下LOCAL_PATH
    3.用中文注释的时候中文的#和英文的#都是一样的,这个比较好。
    4.编译器内部有个mk脚本版本的hash算法,来区别该脚本是不是有更新过,就像我们开发android应用程序一样(需要有修改才能运行
    在模拟器上,否则会提示已经运行到前台),如果所有的.mk脚本没有被修改过,你再次运行make APP=XXX的时候会提示你Nothing To Be Done!
    因为两次的hash值是一样的,说明没被改过,不会重复运行。



  • 相关阅读:
    信号学习第一课--基础知识
    进程学习第一课--基本操作
    执行sql语句后的数据处理api
    如何持续改善你的开车技术?
    刹车失灵不用怕 常见故障分析及应对方法
    原地打方向原来很伤车?看完还敢吗?
    这儿有四个开车小细节,新手司机一定要牢记
    毁车隐患多 真正的老司机绝不会这样停车
    80%的事故发生在这些路段!想保命快点我
    流言终结者!自动挡用车误区,你可能每天都在犯错
  • 原文地址:https://www.cnblogs.com/Anzhongliu/p/6092026.html
Copyright © 2011-2022 走看看