Android.mk简单语法及小例

本文详细介绍了Android.mk的语法和使用,包括如何指定源文件、头文件路径、依赖库,以及如何设置编译版本和编译器参数。通过一个小例子展示了如何使用这些关键字来构建动态库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android.mk简单语法及小例

  • Android.mk同Makefile,用来指定项目编译时需要的源文件头文件路径依赖的lib(动态或静态),以及指定编译的版本(User\Eng\Test\Optional)编译器的可选参数等等。
  • 其实,Android.mk可以简单理解为关键字和语法规范拼凑起来,用于编译的脚本语言。
常用关键字
  • LOCAL_PATH:=$(call my-dir)
    LOCAL_PATH表示当前工程的根目录
    (call my-dir),用来返回当前目录的地址

  • include $(CLEAR_VARS)
    CLEAR_VARS,会清理掉所有以LOCAL_开头的内容,除了LOCAL_PATH。
    一般来讲,在编译前都需要清理一下环境。

  • LOCAL_SRC_FILES
    源文件列表,源文件的路径,根据LOCAL_PATH路径书写。

  • LOCAL_MODULE
    LOCAL_MODULE指定编译出的内容(动态库、静态库、可执行程序)的名称,该名称需要唯一。

  • include $(BUILD_SHARED_LIBRARY)
    BUILD_SHARED_LIBRARY生成动态库
    BUILD_STATIC_LIBRARY生成静态库
    BUILD_EXECUTABLE生成可执行程序

  • LOCAL_STATIC_LIBRARIES
    编译模块依赖的静态库

  • LOCAL_SHARED_LIBRARIES
    编译模块依赖的动态库

  • LOCAL_LDLIBS
    编译时,链接器的选项

  • LOCAL_C_INCLUDES
    指定头文件的路径

  • LOCAL_MODULE_TAGS
    user,该模块只在user版本下编译
    eng,该模块只在eng版本下编译
    tests,该模块只在tests版本下编译
    optional,该模块在所有版本下都编译

  • first-makefiles-under

include $(call first-makefiles-under,$(LOCAL_PATH))

在LOCAL_PATH的所有子目录中查找.mk文件,不包括当前目录

小例
  • 利用上面的关键字,可以写一个简单的mk。
# 指定项目根路径,清理变量
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
# 指定源文件
LOCAL_SRC_FILES := \
             xxxx.cpp
# 指定头文件路径
LOCAL_C_INCLUDES :=\
          $(LOCAL_PATH)/include \
# 依赖的静态库
LOCAL_STATIC_LIBRARIES := libxxxx
# 依赖的动态库,一般库文件如libc.so,只需要写文件名libc即可。
LOCAL_SHARED_LIBRARIES := \
                 libxxxxx
# 动态库路径
LOCAL_LDLIBS := -L./ xxxxxxx
# 生成的模块名
LOCAL_MODULE := libxxxx
# eng版本时编译该模块
LOCAL_MODULE_TAGS := eng
# 编译为动态库
include $(BUILD_SHARED_LIBRARY)
# 查找根目录下的mk文件
#include all testcase
include $(call first-makefiles-under,$(LOCAL_PATH))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林多

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值