ABS(Android Build System)中在编译时生成源代码文件
来源:互联网 发布:vb调用matlab工具箱 编辑:程序博客网 时间:2024/06/06 04:29
编译时经常有的需求是有些.c或者.h文件需要在编译时由某个接口定义文件生成。同时还可能有下面的需求:
* 同一个接口定义文件会用于产生多个源文件。
* 生成的源文件可能会被其它的Project使用。
举例来说,现在需要从接口定义文件xxx.xml通过可执行文件generator生成源文件xxx_A.h,xxx_B.h和xxx_C.c。命令为:
generator A < xxx.xml > xxx_A.h
generator B < xxx.xml > xxx_B.h
generator C < xxx.xml > xxx_C.c
一个方法是用ABS里定义的transform-generated-source函数:
GENERATOR := $(HOST_OUT_EXECUTABLES)/generator$(HOST_EXECUTABLE_SUFFIX) IDL_DIR := ./ IDL_SRC := $(IDL_DIR)/xxx.xml IDL_TGT_CODE := $(IDL_DIR)/xxx_C.c IDL_TGT_A := $(IDL_DIR)/xxx_A.h IDL_TGT_B := $(IDL_DIR)/xxx_B.h GEN := $(LOCAL_PATH)/$(IDL_TGT_A) $(GEN): PRIVATE_PATH := $(LOCAL_PATH) $(GEN): PRIVATE_CUSTOM_TOOL = $(GENERATOR) A < $< > $@ $(GEN): $(LOCAL_PATH)/$(IDL_SRC) $(transform-generated-source) LOCAL_GENERATED_SOURCES += $(GEN) GEN := $(LOCAL_PATH)/$(IDL_TGT_B) $(GEN): PRIVATE_PATH := $(LOCAL_PATH) $(GEN): PRIVATE_CUSTOM_TOOL = $(GENERATOR) B < $< > $@ $(GEN): $(LOCAL_PATH)/$(IDL_SRC) $(transform-generated-source) LOCAL_GENERATED_SOURCES += $(GEN) GEN := $(LOCAL_PATH)/$(IDL_TGT_CODE) $(GEN): PRIVATE_PATH := $(LOCAL_PATH) $(GEN): PRIVATE_CUSTOM_TOOL = $(GENERATOR) C < $< > $@ $(GEN): $(LOCAL_PATH)/$(IDL_SRC) $(LOCAL_PATH)/$(IDL_TGT_A) $(LOCAL_PATH)/$(IDL_TGT_B) $(transform-generated-source) LOCAL_GENERATED_SOURCES += $(GEN) ...LOCAL_SRC_FILES := \ $(IDL_TGT_CODE) \ ...
如果接口定义文件有多个,比如可能有a.xml, b.xml等等,那可能下面方法更方便一些。
GENERATOR := $(HOST_OUT_EXECUTABLES)/generator$(HOST_EXECUTABLE_SUFFIX) IDL_DIR := ./ IDL_TGT_CODE := $(IDL_DIR)/xxx_C.c define transform-generated-A @echo "target Generated $@ <= $<" $(GENERATOR) A < $< > $@ endef define transform-generated-B @echo "target Generated $@ <= $<" $(GENERATOR) B < $< > $@ endef define transform-generated-C @echo "target Generated $@ <= $<" $(GENERATOR) C < $< > $@ endef $(LOCAL_PATH)/$(IDL_DIR)/%_A.h : $(LOCAL_PATH)/$(IDL_DIR)/%.xml $(transform-generated-A) $(LOCAL_PATH)/$(IDL_DIR)/%_B.h : $(LOCAL_PATH)/$(IDL_DIR)/%.xml $(transform-generated-B) $(LOCAL_PATH)/$(IDL_DIR)/%-C.c : $(LOCAL_PATH)/$(IDL_DIR)/%.xml $(transform-generated-C) ...LOCAL_SRC_FILES := \ $(IDL_TGT_CODE) \ ...LOCAL_ADDITIONAL_DEPENDENCIES += $(LOCAL_PATH)/xxx_A.h $(LOCAL_PATH)/xxx_B.h
另外如果想编译出来的image中某几个特定binary带symbol,可以在Android.mk中加:
LOCAL_STRIP_MODULE := false
0 0
- ABS(Android Build System)中在编译时生成源代码文件
- Android Build System (Android 编译系统)
- Android中/system/build.prop文件解读
- Android中/system/build.prop文件解读
- Android中/system/build.prop文件解读
- Android 用NDK编译FFmpeg(生成Android.mk可以放在源代码框架内编译)
- Android命令生成编译出build.xml文件
- Android命令生成编译出build.xml文件
- Android命令生成编译出build.xml文件
- Android将第三方apk文件编译生成到system.img中
- 在Android源代码中编译C/C++
- android studio ndk-build 编译C生成.so文件(ndk基础篇)
- Android-内功篇-system\build.prop文件
- Android中使用AbstractProcessor在编译时生成代码
- Android中使用AbstractProcessor在编译时生成代码
- Android中使用AbstractProcessor在编译时生成代码
- 用android build system 编译一个最小的android平台
- Android平台开发 -Android build system-编译系统分析
- Android OS体系结构介绍及需要撑握开发库
- Java环境变量设置
- null is not a java.class file
- tslib移植-selected device is not a touchscreen I understand 错误解决
- Try...Catch...基础用法
- ABS(Android Build System)中在编译时生成源代码文件
- bean:write 中filter的作用
- Python进阶
- 链式栈的基本操作与实现
- html的字体名字(英文)
- sys系统的kset和kobject代码示例
- js运动-任意值添加运动
- jni使用注意
- POJ 3678 Katu Puzzle 2-SAT