Android.mk文件

编译动态共享库、静态共享库

Android.mk是向Android NDK 构建系统描述NDK项目的GNU Makefile片段。 构建系统规定它放在jni子目录。
先看一个简单的mk文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := JniTest
LOCAL_SRC_FILES := JniTest.cpp

include $(BUILD_SHARED_LIBRARY)

Android.mk文档必须以LOCAL_PATH 变量的定义开头。

LOCAL_PATH := $(call my-dir)

它是Android构建系统用来定位源文件的。 my-dir 是一个宏,用于返回当前目录;

include $(CLEAR_VARS) 用于清除所有的LOCAL_name全局变量,除了LOCAL_PATH, 这样做可以避免变量定义冲突。

LOCAL_MODULE用于给模块设置一个唯一的名称。

LOCAL_SRC_FILES 可以包含多个源文件, 文件名可以用空格分隔开。
include $(BUILD_SHARED_LIBRARY) 表示构建共享库, 它指向的是/android-ndk-r10b/build/core/build-shared-library.mk代码片段。

include $(BUILD_SHARED_LIBRARY) 表示构建静态库,它指向的是/android-ndk-r10b/build/core/build-static-library.mk代码片段

include $(BUILD_EXECUTABLE) 表示编译成可执行程序

LOCAL_CPP_EXTENSION: c++默认源文件为cpp, 这个变量可以用来为C++源文件指定一个或多个文件扩展名。
LOCAL_CPP_EXTENSION := .cpp .cxx

include $(BUILD_PACKAGE) 表示编译apk

LOCAL_SRC_FILES := $(call , src) 包含local_path目录下的所有java文件

LOCAL_PACKAGE_NAME := Launcher3 标识apk的名字

其他函数宏

all-subdir-makefiles: 返回当前目录的所有子目录下的Android.mk文件列表。

this-makefile: 返回当前Android.mk文件的路径

parent-makefile: 返回当前构建文件的父Android.mk文件的路径。

all-java-files-under:
LOCAL_SRC_FILES := $(call all-java-files-under, src)
这里是指明需要编译的文件,也就是说明源码的文件列表。这里编译所有src目录下的java源码。

定义新变量

新变量最好以MY_开头, 如

MY_SRC_FILES := file.c
LOCAL_SRC_FILES := $(MY_SRC_FILES)

条件操作

ifeq ($(TARGET_ARCH), arm)
    LOCAL_SRC_FILES := armonly.c
else
    LOCAL_SRC_FILES := generic.c
endif

filter 和 filter-out 的用法

参考博客

Android.mk的用法和基础 && m、mm、mmm编译命令
Android.mk详解

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值