Android.mk 小细节(LOCAL_CFLAGS 、BUILD_PREBUILT)



一、LOCAL_CFLAGS

LOCAL_CFLAGS-D,增加全局宏定义。
LOCAL_CFLAGS := -DUSE_JSC相当于在所有源文件中增加一个#define USE_JSC
LOCAL_CFLAGS := -DUSE_COPY_BIT=1相当于在所有源文件中增加一个#define USE_COPY_BIT 1
还有其它的像-W等,都是传递给编译使用的。

比如:LOCAL_CFLAGS := Werror 就是传给编译使用


二、BUILD_PREBUILT

这种方式把文件当成编译项目,在Android.mk中copy一个file

LOCAL_PATH := $(call my-dir)  
include $(CLEAR_VARS) \  
LOCAL_MODULE := usb_modeswitch.conf \  
LOCAL_MODULE_CLASS := ETC  \  
LOCAL_MODULE_PATH := $(TARGET_OUT)/etc \  
LOCAL_SRC_FILES :=$(LOCAL_MODULE)  \  
include $(BUILD_PREBUILT)   

上面的就是copy usb_modeswitch.conf 文件到 OUT 下面的 etc目录,这个目录常用来存放配置相关文件。

上面所有的都说的是Copy File  但是如果需要 Copy 一个文件目录下所有就需要另做操作了!


三、ACP

 ACP描述的是一个Android专用的cp命令,在生成system.img镜像文件的过程中是需要用到的。普通的cp命令在不同的平台(Mac OS X、MinGW/Cygwin和Linux)的实现略有差异,并且可能会导致一些问题,于是Android编译系统就重写了自己的cp命令,使得它在不同平台下执行具有统一的行为,并且解决普通cp命令可能会出现的问题。例如,在Linux平台上,当我们把一个文件从NFS文件系统拷贝到本地文件系统时,普通的cp命令总是会认为在NFS文件系统上的文件比在本地文件系统上的文件要新,因为前者的时间戳精度是微秒,而后者的时间戳精度不是微秒。Android专用的cp命令源码可以参考build/tools/acp目录。

看下面的例子:

$(ACP) $(TARGET_ROOT_OUT)/file_contexts $(BUILT_RAMDISKUPDATE_DIR)



你可能感兴趣的:(android,&,linux编译相关,&工具)