Android.mk常用语法(一)

Android


前言

最近在了解安卓,肯定要用到的就是Android.mk,学习一个东西肯定要了解他的语法。

一、什么是Android.mk

Android.mk 是一个用于构建 Android 应用程序的 Makefile 文件。它是 Android NDK 构建系统的一部分,被用于编译 C/C++ 代码、生成静态库或共享库,并将其集成到 Android 应用中。

Android.mk 文件使用 GNU Make 构建工具的语法和规则来定义编译和链接的规则。它为开发者提供了一种描述项目结构、源文件、编译选项和依赖关系等的方法。通过编写 Android.mk 文件,可以自动化构建过程,简化编译操作,并管理复杂的项目结构。

Android.mk 文件通常位于 NDK 项目的 jni 目录下,它与 Android.mk 文件一起工作。Android.mk 文件描述了本地代码(如 C/C++)的构建规则,而 Application.mk 文件描述了全局构建选项,如指定编译器版本、目标平台等。

在编写 Android.mk 文件时,可以定义模块、设置源文件、指定编译和链接选项、定义依赖关系等。可以通过条件判断、循环和函数调用等语法,实现更复杂的构建逻辑。

总之,Android.mk 文件是 Android NDK 中用于构建 C/C++ 代码和库的 Makefile 文件,提供了一种强大的方式来管理和构建项目中的本地代码。

二、常用语法

1.定义模块

include $(CLEAR_VARS)
LOCAL_PATH := $(call my-dir)

# 定义模块
LOCAL_MODULE := mymodule

# 设置源文件
LOCAL_SRC_FILES := file1.c file2.c

# 设置头文件路径
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include

# 设置编译标志
LOCAL_CFLAGS := -Wall -O2

# 添加依赖库
LOCAL_LDLIBS := -llog

include $(BUILD_SHARED_LIBRARY)

通过 LOCAL_MODULE 定义模块名称,LOCAL_SRC_FILES 设置源文件,LOCAL_C_INCLUDES 设置头文件路径,LOCAL_CFLAGS 设置编译标志,LOCAL_LDLIBS 添加依赖库。最后使用 include $(BUILD_SHARED_LIBRARY) 构建共享库。

2.引入其他的 Android.mk 文件

include $(CLEAR_VARS)
include $(LOCAL_PATH)/path/to/other.mk

通过 include 关键字和文件路径引入其他的 Android.mk 文件,以重用已经定义的模块和规则。

3.添加依赖关系

LOCAL_STATIC_LIBRARIES := lib1 lib2

4.使用 ifeq 条件判断

YOUR_VARIABLE := some_value

ifeq ($(YOUR_VARIABLE), some_value)
    # 如果 YOUR_VARIABLE 的值为 some_value,则执行这里的代码
else
    # 否则执行这里的代码
endif

根据 $(YOUR_VARIABLE) 的值是否等于 some_value,执行相应的代码块。

ifeq ($(TARGET_ARCH_ABI), arm64-v8a)
    # 如果目标架构是 arm64-v8a,执行以下规则
    $(info Target architecture is arm64-v8a)
else ifeq ($(TARGET_ARCH_ABI), armeabi-v7a)
    # 如果目标架构是 armeabi-v7a,执行以下规则
    $(info Target architecture is armeabi-v7a)
else
    # 如果以上条件都不成立,执行以下规则
    $(info Unknown target architecture)
endif

5.生成目标文件

LOCAL_MODULE := your_module_name

include $(BUILD_EXECUTABLE)

通过设置 LOCAL_MODULE 变量,可以定义一个可执行文件的名称。然后,使用 include $(BUILD_EXECUTABLE) 将当前模块设置为可执行文件类型,从而生成目标文件。

猜你喜欢

转载自blog.csdn.net/qq_51963216/article/details/131640361
今日推荐