问题
在开发中碰到一个需要编译时拷贝文件到out指定目录中的问题。在不了解编译系统中一些路径对应的变量值非常不方便。所以花了一点时间查找到了部分变量名以及对应的值。
方法
如果大家没有找到对应的变量名的值,可以尝试如下方法:
选择一个模块的android.mk文件,在里面添加:
$(warning "TARGET_EXTRA_DATA_PATH is $(TARGET_EXTRA_DATA_PATH)")
当你编译这个模块的时候,就会在控制台打印出这个值,就不用做全局搜索那么费时了。
常用变量值
TARGET_OUT | out/target/product/konka6582_i121_wt_l/system |
TARGET_ROOT_OUT | out/target/product/konka6582_i121_wt_l/root |
MTK_ROOT | vendor/mediatek/proprietary/ |
MTK_PATH_CUSTOM | vendor/mediatek/proprietary/custom/konka6582_i121_wt_l |
TARGET_PRODUCT | full_konka6582_i121_wt_l |
GENERIC_CUSTOM_PATH | vendor/mediatek/proprietary/custom/generic/factory |
TARGET_OUT_VENDOR | out/target/product/konka6582_i121_wt_l/system/vendor |
TARGET_OUT_OEM | out/target/product/konka6582_i121_wt_l/oem |
TARGET_OUT_DATA | out/target/product/konka6582_i121_wt_l/data |
makefile应用小技巧
$(shell mkdir -p $(TARG_DIR))
循环创建TARG_DIR全路径上的文件,也即是会递归创建该路径不存在的文件。-p表示会递归创建路径上的文件夹。
$(shell cp -rf $(LOCAL_PATH)/media/mls/* $(TARG_DIR))
类似$(shell cp -rf srcPath destPath)。将源文件路径的内容拷贝到目的文件中,并不会覆盖目标文件这个文件夹。