博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android.mk和Application.mk基本内容
阅读量:6799 次
发布时间:2019-06-26

本文共 2307 字,大约阅读时间需要 7 分钟。

目录

android.mk

Android.mk 文件所含内容的基本信息

LOCAL_PATH :=$(call my-dir)  //此变量表示源文件在开发树中的位置include $(CLEAR_VARS)       //CLEAR_VARS 变量指向一个特殊的 GNU Makefile,后者会清除许多 LOCAL_XXX 变量LOCAL_MODLE := CKAppSecret      //LOCAL_MODULE 变量存储您要编译的模块的名称LOCAL_SRC_FILES := main.cpp             //LOCAL_SRC_FILES 变量必须包含要编译到模块中的 C 和/或 C++ 源文件列表include $(BUILD_SHARED_LIBRARY)     /* 此变量指向的编译脚本用于收集您在 LOCAL_XXX 变量中提供的模块的所有相关信息,以及确定如何根据您列出的源文件编译目标共享库。请注意,使用此脚本要求您至少已经为 LOCAL_MODULE 和 LOCAL_SRC_FILES 赋值。共享库变量会导致编译系统生成扩展名为 .so 的库文件。*/

变量和宏

NDK 定义的 include 变量

  • CLEAR_VARS
    此变量指向的编译脚本用于取消定义下文“开发者定义的变量”部分中列出的几乎所有 LOCAL_XXX 变量。在描述新模块之前,请使用此变量来包含此脚本
  • BUILD_SHARED_LIBRARY

    此变量指向的编译脚本用于收集您在 LOCAL_XXX 变量中提供的模块的所有相关信息,以及确定如何根据您列出的源文件编译目标共享库

  • BUILD_STATIC_LIBRARY....

  • PREBUILT_SHARED_LIBRARY

    这里的 LOCAL_SRC_FILES 值不能是源文件,而必须是指向预编译共享库的一个路径,例如 foo/libfoo.so

目标信息变量(没用到)

编译系统会根据 APP_ABI 变量所指定的每个 ABI 解析 Android.mk 一次

  • TARGET_ARCH

    编译系统解析此 Android.mk 文件时面向的 CPU 系列。此变量是 arm、arm64、x86 或 x86_64 之一。

  • TARGET_PLATFORM

    编译系统解析此 Android.mk 文件时面向的 Android API 级别编号。例如,Android 5.1 系统映像对应于 Android API 级别 22:android-22。

  • TARGET_ARCH_ABI

    编译系统解析此 Android.mk 文件时面向的 ABI

  • TARGET_ABI

    目标 AndroidAPI 级别与 ABI 的连接

模块描述变量

本部分中的变量会向编译系统描述您的模块。每个模块描述都应遵守以下基本流程:

  1. 使用 CLEAR_VARS 变量初始化或取消定义与模块相关的变量。

  2. 为用于描述模块的变量赋值

  3. 使用 BUILD_XXX 变量设置 NDK 编译系统,使其将适当的编译脚本用于该模块。

  • LOCAL_PATH

    此变量用于指定当前文件的路径。必须在 Android.mk 文件开头定义此变量。

  • LOCAL_MODULE

    此变量用于存储模块名称。必须在包含任何脚本(CLEAR_VARS 的脚本除外)之前定义此变量

  • LOCAL_MODULE_FILENAME

    为生成的模块指定自己选择的名称

  • LOCAL_SRC_FILES

    此变量包含编译系统生成模块时所用的源文件列表
    建议避免使用绝对文件路径;相对路径可以提高 Android.mk 文件的移植性

  • LOCAL_CFLAGS

    此可选变量用于设置在编译 C 和 C++ 源文件时编译系统要传递的编译器标记。这样,您就可以指定额外的宏定义或编译选项
    可以使用 LOCAL_CPPFLAGS 仅为 C++ 指定标记

  • LOCAL_LDLIBS

    此变量列出了在编译共享库或可执行文件时使用的额外链接器标记
    利用此变量,您可使用 -l 前缀传递特定系统库的名称

application.mk

创建一个配置目标 ABI、工具链、发布/调试模式和 STL 的 Application.mk 文件。

对于其中任何您未指明的项,将分别使用以下默认值:
ABI:所有非弃用的 ABI
工具链:Clang
模式:发布
STL:系统

  • APP_ABI
指令集
32 位 ARMv7 APP_ABI := armeabi-v7a
64 位 ARMv8 (AArch64) APP_ABI := arm64-v8a
x86 APP_ABI := x86
x86-64 APP_ABI := x86_64
所有支持的 ABI(默认) APP_ABI := all
  • APP_PLATFORMAPP_PLATFORM

    会声明编译此应用所面向的Android API 级别,并对应于应用的 minSdkVersion
    如果未指定,ndk-build 将以 NDK 支持的最低 API 级别为目标。最新 NDK 支持的最低 API 级别总是足够低,可以支持几乎所有使用中的设备。

  • APP_OPTIM

    该变量可以设置为release和debug来改变生成的二进制文件的优化级别,默认为release模式。
    发布模式会启用优化,并可能生成无法与调试程序一起使用的二进制文件。

    调试模式会停用优化,以便可以使用调试程序。

转载于:https://www.cnblogs.com/Fsxq/p/11031587.html

你可能感兴趣的文章
【git】git pull
查看>>
Hive分析窗体函数之SUM,AVG,MIN和MAX
查看>>
调整 Windows VM 的大小
查看>>
Flask基础
查看>>
微信小程序性能优化之一
查看>>
Service工作过程
查看>>
linq to xml 初学 -- 查询语法
查看>>
NUnit Console Command Line
查看>>
读写分离主从复制集群分库分表的总体理解
查看>>
编译器指示语句
查看>>
PLSQL中显示Cursor、隐示Cursor、动态Ref Cursor差别
查看>>
《算法导论》读书笔记(三)
查看>>
react-redux
查看>>
Java NIO(一)I/O模型概述
查看>>
【转】对博士学位说永别
查看>>
SQL Server等待事件—RESOURCE_SEMAPHORE_QUERY_COMPILE
查看>>
权限模型
查看>>
windowns 2008(apache2.2.25 x86 openssl0.98y) 升级openssl1.0.1e(为了支持小程序接口TLS1.2)
查看>>
在.NET下如何预防XXE注入攻击
查看>>
HTC T8878刷机手册
查看>>