android ndk 开发之Application.mk

Application.mk是Android NDK开发中的关键文件,用于指定应用所需的库和编译选项。本文介绍了它的作用、存放位置及核心变量如APP_PROJECT_PATH、APP_MODULES和APP_OPTIM的使用。APP_OPTIM可设定为release或debug,影响编译时的优化级别,debug模式便于调试。
摘要由CSDN通过智能技术生成

Application.mk的作用:

Application.mk描述了应用程序需要哪些动态库和静态库。

 

存放位置:

文件通常放在项目目录的jni文件夹下。

 

变量定义:

由于Application.mk说到底只是作为GNU makefile的一个片段,其中也需要定义一些变量。

 

-APP_PROJECT_PATH

此变量应该被赋予项目的根目录地址,此项为可选项。


-APP_MODULES


此项为可选项,当没有此选项时,NDK会自动编译android.mk文件中定义的所有模块及其包含的子模块。

 

当有此选项时,必须是一个模块的列表,各个模块之间以空格为分隔符分开或者是向android.mk中罗列开来。

 

-APP_OPTIM

此选项可以被定义为 release 或 debug。这个选项用于变更编译程序模块时的优化级别。

默认的选项是release,此选项下会得到较高级别的优化。debug下为了便于调试不会进行过多优化。


可以在manifest文件中<application>tag内设置android:debuggable为ture来改变默认值为debug

其实无论debug还是release都是允许用户进行调试的,只是debug模式下会提供更多的信息。

 

-APP_BUILD_SCRIPT
默认条件下,NDK编译系统会到工程目录的jni文件夹下查找android.mk文件。如果你想覆盖这个行为的话
就可以定义此变量此变量。如果你给定的是一个非绝对路径的话,
当你在编译OpenPose源代码时,在源代码的根目录下应该会有一个名为`Android`的目录,这个目录中就包含了`Android.mk`和`Application.mk`两个文件,用于在Android NDK环境下编译OpenPose库。 这是`Android.mk`文件的一个示例: ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := openpose LOCAL_SRC_FILES := src/main.cpp \ src/openpose.cpp \ src/pose.cpp \ src/net.cpp \ src/utils.cpp LOCAL_C_INCLUDES := $(LOCAL_PATH)/include \ $(LOCAL_PATH)/3rdparty/include LOCAL_LDLIBS := -lm -llog -ljnigraphics -ldl -lz LOCAL_STATIC_LIBRARIES := cpufeatures include $(BUILD_SHARED_LIBRARY) $(call import-module,android/cpufeatures) ``` 在这个文件中,`LOCAL_PATH`是当前目录的路径,`LOCAL_MODULE`是编译后生成的库文件名,`LOCAL_SRC_FILES`是编译需要的源文件列表,`LOCAL_C_INCLUDES`是头文件所在目录,`LOCAL_LDLIBS`是需要链接的库文件列表,`LOCAL_STATIC_LIBRARIES`是需要静态链接的库文件列表。 这是`Application.mk`文件的一个示例: ``` APP_ABI := armeabi-v7a APP_PLATFORM := android-19 APP_STL := gnustl_static APP_BUILD_SCRIPT := Android.mk APP_OPTIM := release ``` 在这个文件中,`APP_ABI`是指定编译生成的so库的架构,`APP_PLATFORM`是指定编译生成的so库的最低支持的安卓API版本,`APP_STL`是指定编译使用的STL库,`APP_BUILD_SCRIPT`是指定编译脚本文件名,`APP_OPTIM`是指定编译优化级别。 需要根据你的具体需求,对这些文件进行相应的调整和修改,以满足你的编译需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值