• NDK开发之Application.mk文件详解


    做过NDK开发的同学应该都知道有个Application.mk文件,这是android NDK构建系统使用的一个可选构建文件。它的目的是描述应用程序需要哪些模块,也定义了所有模块的一些通用变量。主要有以下几个变量。


    APP_MODULES,默认情况下,ndk会构建在android.xk文件中声明的所有模块。但是这个变量可是覆盖上述行为。
    假如我们的android.mk文件是这样的:

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE    := jni1
    LOCAL_SRC_FILES := jni1.c
    
    include $(BUILD_SHARED_LIBRARY)
    include $(CLEAR_VARS)
    
    LOCAL_MODULE    := jni2
    LOCAL_SRC_FILES := jni2.c
    
    include $(BUILD_SHARED_LIBRARY)
    

    application.mk文件是这样的:

    APP_MODULES := jni1

    那么系统只会生成libjni1.so文件,而不会生成libjni2.so文件。如果要生成libjni2.so,那么我们可以这样:

    APP_MODULES := jni1 jni2

    APP_OPTIM:该变量可以被设置为release或者debug,这样可以改变生成的二进制文件的优化级别。默认情况下是release模式。此时生成的二进制文件被高度优化。如果需要调试的话我们最好还是设置为debug模式。


    APP_CLAGS:该变量列出了一些编译器标志,在编译任何模块的C或者C++代码时这些标志都会被传给编译器。


    APP_CPPFLAGS:该变量列出了一些编译器标志,在编译任何模块的C++代码时这些标志都会被传给编译器。


    APP_ABI:默认情况下,ndk构建系统为armeabi,ABI生成二进制文件,该变量可以改变上述行为:

    APP_ABI := armeabi armeabi-v7a x86

    如果要为所有支持的ABI生成二进制文件:

    APP_ABI := all

    APP_STL:默认情况下,ndk构建系统使用最小的stl运行库,也被称为system库,该变量可以改变上述行为。


    APP_GUNSTL_FORCE_CPP_FEATURES:表明所有的模块都依赖于具体的C++特性,与LOCAL_CPP_EXTENSIONS类似。


    APP_SHORT_COMMANDS:该变量使得构建系统在有大量源文件的情况下可以在项目中使用更短的命令。与LOCAL_SHORT_COMMANDS类似。


    版权声明:本文为博主原创文章,未经博主允许不得转载。若有错误地方,还望批评指正,不胜感激。

  • 相关阅读:
    Spark-sql windows 下 执行错误.
    notepad ++ 注册表
    log4j 配置文件 示例
    linux 查看 进程 内存占用
    spring boot 常见错误解决
    python 轻量 web 框架 Bottle 使用
    Spring cloud eureka 添加 spring-security
    vue can‘ not resolver sass-loader 的 解决办法。
    外国人眼中的珍珠奶茶是啥?
    75.2亿美元:诺基亚、微软终于在一起
  • 原文地址:https://www.cnblogs.com/lenve/p/4889330.html
Copyright © 2020-2023  润新知