zoukankan      html  css  js  c++  java
  • Android.mk进阶用法

    1.学会使用函数和shell命令组合完成复杂的事情:

    define all-cpp-files-under

    $(patsubst ./%, %,  $(shell  cd $(LOCAL_PATH); find -L $(1)  -name "*.cpp" ))

    define all-cpp-files-under-except

    $(patsubst ./%, %,  $(shell  cd $(LOCAL_PATH); find -L $(1)  -name "*.cpp"  -and -not  $(1)))

    makefile里面的三个常用命令:

    1、wildcard : 扩展通配符,用于查找一个目录下的所有符合条件的文件
    2、notdir : 去除路径,仅保留文件名
    3、patsubst :替换通配符,也可以是任意文本替换

    CPP_FILE_LIST := $(call all-subdir-cpp-files)
                    $(wildcard $(LOCAL_PATH)/platform/*.cpp)
                    $(wildcard $(LOCAL_PATH)/platform/android/*.cpp)
                    $(wildcard $(LOCAL_PATH)/platform/android/jni/*.cpp)

    wildcard 可以遍历指定目录下的所有特定的文件,但是不支持递归遍历,所以需要逐个指定

    LOCAL_SRC_FILES := $(CPP_FILE_LIST:$(LOCAL_PATH)/%=%)
    LOCAL_SRC_FILES += $(C_FILE_LIST:$(LOCAL_PATH)/%=%)

    $(CPP_FILE_LIST:$(LOCAL_PATH)/%=%) 这个又是一个文本替换技巧。意思是,把CPP_FILE_LIST里面的所有$(LOCAL_PATH)/去掉。之所以有这样的替换是因为LOCAL_SRC_FILES已经包含了LOCAL_PATH,其文件名应该是相对于Android.mk的相对路径。如果SRC_FILES里面还包含LOCAL_PATH的路径那就出错了。同样这也是我们在#1 #2处需要将查找到的文件名中的"./"去除掉的原因。

    2. 加入静态库,加了LOCAL_WHOLE_STATIC_LIBRARIES代表编译器会将静态库完整链接而不会进行删减优化 LOCAL_WHOLE_STATIC_LIBRARIES := cocos_libpng_static

    LOCAL_WHOLE_STATIC_LIBRARIES += cocos_jpeg_static

    LOCAL_WHOLE_STATIC_LIBRARIES += cocos_libxml2_static

    LOCAL_WHOLE_STATIC_LIBRARIES += cocos_libtiff_static

  • 相关阅读:
    python3.x学习笔记2018-02-05更新
    网络安全学习资源整理2018-02-02更新
    隔行变色效果
    自制滚动条
    关于ico图标
    CSS实现标题/段落省略效果的三剑客
    第三章(循环) 编程题 2
    第三章(循环) 编程题
    python基础03--基本数据类型(字符串)
    python基础02--运算符与基本数据类型(数字)
  • 原文地址:https://www.cnblogs.com/Arnold-Zhang/p/15384161.html
Copyright © 2011-2022 走看看