版权声明:本文为CSDN博主「kc专栏」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kc58236582/article/details/49795865
一、LOCAL_CFLAGS
-D
,增加全局宏定义。LOCAL_CFLAGS := -DUSE_JSC
相当于在所有源文件中增加一个#define USE_JSC
LOCAL_CFLAGS := -DUSE_COPY_BIT=1
相当于在所有源文件中增加一个#define USE_COPY_BIT 1
-O
,代表默认优化
可选:-O0
不优化,-O1
低级优化,-O2
中级优化,-O3
高级优化,-Os
代码空间优化
-W[no-]<警告选项>
no-
表示诊断时忽略这个警告
编译器的警告设置参数,拥有众多的选项,下面举一些常用的例子:-Woption
让编译器给出option指定的编译警告,常用的一些如下:
unused-function: 遇到仅声明过但尚未定义的静态函数时发出警告。
unused-parameter: 从未用过的函数参数的警告。
unused-variable: 在本地声明但从未用过的变量的警告。
unused-value: 经计算但从未用过的值得警告。
return-type: 对函数返回类型不当的警告。
uninitialized:在初始化之前就使用自动变量。
float-equal: 比较两个浮点数是否相等。
-Wall
给出“几乎”所有的编译器警告,注意是“几乎”。下面是一些-Wall没有输出的警告类型:
sign-compare:将有符号类型和无符号类型数据进行比较时发出警告。
unreachable-code:如果发现从未执行的代码时给出警告。
inline:如果某函数不能按要求内嵌(inline),则无论是函数声明为inline或者是指定了-finline-functions 选项,编译都将发出警告
-Werror
把所有的警告都视为错误处理。-Wno-option
如果我们不想输出某些警告信息,可以使用此参数形式,比如:LOCAL_CFLAGS := -Wno-unused-parameter
二、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)
评论