Android.mk文件

Android 专栏收录该内容
7 篇文章 0 订阅

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

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
    点赞
  • 5
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值