Android.mk关键字含义

命令行含义

LOCAL_PATH := $(call my-dir)  

每个mk文件必须以LOCAL_PATH开始
call my-dir用于返回当前mk文件路径,由build system提供。
所以第一行什么也不用改,必须这样写。

include $(CLEAR_VARS)

包含变量CLERA_VARS,CLEAR_VARS也是由build system提供,用于清除LOCAL_开头的一些变量。清理工作是必要且必须的,如果不清理可能全局变量间会互相影响。

LOCAL_SRC_FILES := iperf

指定编译文件“iperf”,必须是全称,如果有后缀名要加后缀名。

LOCAL_MODULE := iperf

为模块取名,必须唯一且不包含空格。build system会自动添加前缀和后缀。例如,生成后会自动添加lib为libiperf,如果此处声明为:=libiperf,那么生成后不会再添加lib为liblibiperf。

LOCAL_MODULE_CLASS := BIN

编译时的中间文件存放的位置

LOCAL_MODULE_TAGS := eng

该模块只在eng版本下编译。常用还有user版本。

LOCAL_MODULE_PATH := $(TARGET_OUT)/bin

模块编译结果将要存放的目录

include $(BUILD_PREBUILT)

将预编译好的程序拷贝直接拷贝至安装目录

手动将Android.bp转换为Android.mk可能会比较繁琐,因为它们的格式和结构有所不同。但是,你可以按照以下步骤进行转换: 1. 创建一个新的Android.mk文件,并在文件开头添加以下内容: ``` LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) ``` 2. 找到Android.bp文件中的每个模块定义。每个模块定义通常以`cc_library`、`cc_binary`、`java_library`等关键字开始。将每个模块定义转换为Android.mk规则。 例如,将以下Android.bp示例转换为Android.mk: ```bp cc_library { name: "my_library", srcs: ["file1.cpp", "file2.cpp"], include_dirs: ["include"], shared_libs: ["lib1", "lib2"], cflags: ["-Wall", "-Werror"], cppflags: ["-std=c++11"], target: { android: { cflags: ["-fno-exceptions"], }, }, } ``` 可以转换为以下Android.mk规则: ```mk LOCAL_MODULE := my_library LOCAL_SRC_FILES := file1.cpp file2.cpp LOCAL_C_INCLUDES := $(LOCAL_PATH)/include LOCAL_SHARED_LIBRARIES := lib1 lib2 LOCAL_CFLAGS := -Wall -Werror LOCAL_CPPFLAGS := -std=c++11 ifeq ($(TARGET_ARCH),arm) LOCAL_CFLAGS += -fno-exceptions endif include $(BUILD_STATIC_LIBRARY) ``` 根据你的模块类型和属性,转换规则的具体细节可能会有所不同。 3. 对于每个模块定义,将转换后的规则添加到Android.mk文件中。 4. 根据你的项目结构和依赖关系,可以按照需要添加其他规则和变量。 5. 最后,在Android.mk文件的末尾,添加以下内容来完成文件的闭合和构建规则的设置: ``` include $(BUILD_PACKAGE) ``` 请注意,手动转换可能会比较繁琐,并且需要根据你的具体情况进行调整。在进行手动转换之前,最好先了解Android.mk文件的结构和语法规则,以及你要转换的每个模块类型的规则和属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值