Gramática común de Android.mk (1)

Androide


prefacio

Recientemente, al aprender sobre Android, debe usar Android.mk. Para aprender algo, debe comprender su gramática.

1. ¿Qué es Android.mk?

Android.mk es un Makefile para crear aplicaciones de Android. Forma parte del sistema de compilación NDK de Android y se utiliza para compilar código C/C++, generar bibliotecas estáticas o compartidas e integrarlas en aplicaciones de Android.

El archivo Android.mk usa la sintaxis y las reglas de la herramienta de compilación GNU Make para definir las reglas para compilar y vincular. Proporciona a los desarrolladores una forma de describir la estructura del proyecto, los archivos fuente, las opciones de compilación, las dependencias y más. Al escribir un archivo Android.mk, puede automatizar el proceso de compilación, simplificar las operaciones de compilación y administrar estructuras de proyectos complejas.

El archivo Android.mk generalmente se encuentra en el directorio jni del proyecto NDK y funciona con el archivo Android.mk. El archivo Android.mk describe las reglas de compilación para el código nativo (como C/C++), mientras que el archivo Application.mk describe las opciones de compilación globales, como especificar la versión del compilador, la plataforma de destino, etc.

Al escribir un archivo Android.mk, puede definir módulos, establecer archivos fuente, especificar opciones de compilación y enlace, definir dependencias y más. Se puede realizar una lógica de construcción más compleja a través de la sintaxis, como el juicio condicional, el bucle y la llamada de función.

En resumen, el archivo Android.mk es un Makefile para compilar código C/C++ y bibliotecas en el NDK de Android, lo que brinda una manera poderosa de administrar y compilar código nativo en el proyecto.

2. Gramática común

1. Definir el módulo

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)

Defina el nombre del módulo a través de LOCAL_MODULE, LOCAL_SRC_FILES establezca el archivo fuente, LOCAL_C_INCLUDES establezca la ruta del archivo de encabezado, LOCAL_CFLAGS establezca el indicador de compilación y LOCAL_LDLIBS agregue la biblioteca dependiente. Finalmente, use include $(BUILD_SHARED_LIBRARY) para construir la biblioteca compartida.

2. Importar otros archivos Android.mk

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

Introduzca otros archivos Android.mk mediante la palabra clave incluida y la ruta del archivo para reutilizar módulos y reglas ya definidos.

3. Agregar dependencias

LOCAL_STATIC_LIBRARIES := lib1 lib2

4. Utilice el juicio condicional ifeq

YOUR_VARIABLE := some_value

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

Dependiendo de si el valor de $(TU_VARIABLE) es igual a algún_valor, se ejecuta el bloque de código correspondiente.

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. Generar archivos de destino

LOCAL_MODULE := your_module_name

include $(BUILD_EXECUTABLE)

Al configurar la variable LOCAL_MODULE, puede definir el nombre de un archivo ejecutable. Luego, use include $(BUILD_EXECUTABLE) para configurar el módulo actual para que sea de tipo ejecutable, lo que da como resultado un archivo de objeto.

Supongo que te gusta

Origin blog.csdn.net/qq_51963216/article/details/131640361
Recomendado
Clasificación