京东第一次做网站,wordpress后台怎么进的,福州企业建站程序,.net 网站 源代码文章目录 Android.mk与makefile区别Android.mk规则Android.mk基本格式 Android.mk与makefile区别
Android.mk 和 Makefile 都是用于构建代码项目的构建脚本文件#xff0c;但是它们在特定上下文中有一些区别#xff1a;
Android.mk: Android.mk 是用于构建 Android 应用或库… 文章目录 Android.mk与makefile区别Android.mk规则Android.mk基本格式 Android.mk与makefile区别
Android.mk 和 Makefile 都是用于构建代码项目的构建脚本文件但是它们在特定上下文中有一些区别
Android.mk: Android.mk 是用于构建 Android 应用或库项目的构建文件通常用于基于 Android NDK 的 C/C 项目。Android.mk 文件采用类似 GNU Make 的语法但有一些 Android 特定的规则和函数比如 LOCAL_MODULEinclude $(BUILD_SHARED_LIBRARY) 等。Android.mk 文件用于描述 Android 项目中的模块、库依赖关系、编译选项等。 Makefile: Makefile 是一个通用的构建工具文件可用于构建各种类型的项目不仅限于 Android 开发。Makefile 使用 GNU Make 编程语言通过指定目标、依赖关系和命令来描述构建过程。Makefile 可用于编译和链接任何类型的项目包括 C、C、Java 等。
Android.mk规则
以下是一些常用的 Android 特定规则和函数
include $(BUILD_SHARED_LIBRARY): 包含共享库构建规则用于构建一个共享库。include $(BUILD_STATIC_LIBRARY): 是一个规则包含静态库构建规则用于构建一个静态库。include $(PREBUILT_STATIC_LIBRARY) :是一个变量用于引用预先编译好的静态库文件。通过使用 PREBUILT_STATIC_LIBRARY 变量可以将预先编译好的静态库文件包含到当前 Android.mk 文件中以便在编译链接过程中使用该静态库。include $(BUILD_EXECUTABLE):是一个规则用于构建一个可执行文件executableLOCAL_PATH:一个常用的变量用于表示当前 Android.mk 文件所在的目录路径。在 Android 开发中通常会使用 LOCAL_PATH 变量来获取当前 Android.mk 文件所在的路径方便在定义模块属性时引用该路径。include $(CLEAR_VARS):CLEAR_VARS变量是生成系统提供的它指向一个特殊的GNU Makefile.这个Makefile将会为你自动清除许多名为LOCAL_XXX的变量(比如:LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES,等),但LOCAL_PATH是例外它不会被清除。这些变量的清除是必须的因为所有的控制文件是在单一的GNU make执行环境中解析的在这里所有的变量都是全局的。LOCAL_MODULE: 指定当前模块的名称。LOCAL_SRC_FILES: 指定当前模块的源文件列表。LOCAL_C_INCLUDES: 指定当前模块的头文件搜索路径。LOCAL_CFLAGS: 指定当前模块的 C 编译选项。LOCAL_CPPFLAGS: 指定当前模块的 C 编译选项。LOCAL_LDLIBS: 指定当前模块链接时需要的动态链接库.so 文件。可以使用 -l 参数指定需要链接的库例如-llog 表示链接系统日志库。LOCAL_SHARED_LIBRARIES: 指定当前共享库模块依赖的其他共享库。LOCAL_STATIC_LIBRARIES:指定当前模块依赖的静态库。注意引用了两个有调用关系的静态库的时候需要把其中被调用的库放在调用者的后面
Android.mk基本格式 jni/Anroid.mk文件为NDK生成系统描述了这个共享库。它的内容为---------- cut here ------------------
LOCAL_PATH : $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE : hello-jni
LOCAL_SRC_FILES : hello-jni.c
include $(BUILD_SHARED_LIBRARY)
---------- cut here ------------------现在让我们逐行解释
LOCAL_PATH : $(call my-dir)每个Android.mk文件都必须以定义LOCAL_PATH变量开始。其目的是为了定位源文件的位置。在这个例子生成系统提供的宏函数macro function)‘my-dir用来返回当前路径即放有Android.mk文件的文件夹include $(CLEAR_VARS)CLEAR_VARS变量是生成系统提供的它指向一个特殊的GNU Makefile.这个Makefile将会为你自动清除许多名为LOCAL_XXX的变量(比如LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES,等),但LOCAL_PATH是例外它不会被清除。
这些变量的清除是必须的因为所有的控制文件是在单一的GNU make执行环境中解析的在这里所有的变量都是全局的。LOCAL_MODULE : hello-jni为了在你的Android.mk文件标识每个组件必须定义LOCAL_MODULE变量。这个名字必须要唯一的并且不能包含空格。注意生成系统会自动地为相应生成的文件加入前缀或后缀。换言之一个名叫foo的共享库组件会生成libfoo.so重要注意事项如果你把组件取名为‘libfoo,生成系统将不会加上‘lib前缀还是生成libfoo.so。这是为了支持源于Android平台源代码的Android.mk文件。LOCAL_SRC_FILES : hello-jni.cLOCAL_SRC_FILES变量必须包含一系列将被构建和组合成组件的C/C源文件。
注意你不需要列出头文件或include文件因为生成系统会为你自动计算出源文件的依赖关系。仅仅列出那些将直接传给编译器的源文件足矣。注意默认的C源文件的扩展名是‘.cpp。但你可以通过定义LOCAL_DEFAULT_EXTENSION
来指定一个扩展名。别忘了扩展名开始的那一点比如,‘.cxx’,能行但‘cxx不行)。include $(BUILD_SHARED_LIBRARY)生成系统提供的BUIL_SHARED_LIBRARY变量指向一个GNU Makefile脚本这个脚本主管收集在最近的一次#include $(CLEAR_VARS)(即清除本地变量)之后你所定义的LOCAL_XXX变量的信息并决定生成什么如何准确的生成。
BUILD_STATIC_LIBRARY可生成一个静态库。