模块移植-加宏选择性编译

这次进行模块移植的过程中,遇到了一种情况,那就是,当我们有些模块我们需要整块的移植到新的项目下。但是,新的项目下,本来就有这个模块,我们好需要保留这个模块,只不过是,这个项目可以根据我们的需求,选择行编译其中的一个模块。具体的方法就是,我们在这个项目下,创建一个我们自己的文件夹,然后把我们的模块放进来。接下来的工作就是如何选择性编译了。当时的方法就是通过宏控控制。具体操作如下

1.在自己需要移植的模块编译文件中(Android.mk),加入宏判断,如下【目录  vanzo/packages/SoundRecord】

ifeq ($(strip $(VANZO_FEATURE_OOS_SOUNDRECORDER)), yes)
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

#LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_STATIC_JAVA_LIBRARIES := com.mediatek.soundrecorder.ext

# for mediatek sdk MediaRecorderEx and StorageManagerEx
LOCAL_JAVA_LIBRARIES += mediatek-framework

LOCAL_PACKAGE_NAME := SoundRecorder
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
include $(call all-makefiles-under,$(LOCAL_PATH))
endif

2.在原本模块的Android.mk文件中,加入宏判断,这个当然是跟欲移植模块是互斥的 【目录 packages/apps/SoundRecord】

ifeq ($(strip $(VANZO_FEATURE_OOS_SOUNDRECORDER)), no)
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

#LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_STATIC_JAVA_LIBRARIES := com.mediatek.soundrecorder.ext

# for mediatek sdk MediaRecorderEx and StorageManagerEx
LOCAL_JAVA_LIBRARIES += mediatek-framework

LOCAL_PACKAGE_NAME := SoundRecorder
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)
include $(call all-makefiles-under,$(LOCAL_PATH))
endif

说白了,也就是在之前的编译下,加了一个条件判断

ifeq(hong)

bianyi

endif

3.最后,别忘了添加这个宏,在env_common.ini文件中【zprojects/common】

VANZO_FEATURE_OOS_FMRADIO=no

# Vanzo:wangjianhua VANZO_FEATURE_OOS_FILEMANAGER start
# Description:是否启用OOS风格的Filemanager
# Category:Filemanager
# end
VANZO_FEATURE_OOS_FILEMANAGER=no

# Vanzo:wangjianhua VANZO_FEATURE_OOS_CALENDAR start
# Description:是否启用OOS风格的Calendar
# Category:Calendar
# end
VANZO_FEATURE_OOS_CALENDAR=no

# Vanzo:zhangshuli VANZO_FEATURE_OOS_SOUNDRECORDER start
# Description:是否启用OOS风格的SoundRecorder
# Category:SoundRecorder
# end
VANZO_FEATURE_OOS_SOUNDRECORDER=no
时间: 2024-10-17 18:06:45

模块移植-加宏选择性编译的相关文章

Linux开源模块移植概述暨交叉编译跨平台移植总结--摘自《嵌入式Linux驱动模板精讲与项目实践》

本文摘自<嵌入式Linux驱动模板精讲与项目实践>一书中的"开发与调试技巧". Linux的强大威力就在于有很多开源项目可以使用,通常很多需求可以通过寻找相关的开源模块做为快速解决方案.要把这些开源模块应用到嵌入式中,其中一个关键点就是要使用交叉编译工具对开源项目进行交叉编译. 根据具体情况,下载的开源项目在组织上有很多情况,在此对各种情况进行归类介绍. 1. 下载的开源软件包找不到Makefile 对于这种开源包通常是采用configure的方式组织的,那么第一步就是使用

将libvex移植到Visual Studio编译平台下的经验总结

1. 两难 将libvex从Linux移植到Windows,移植工作聚集于Cross-Compiler,而不是预料的Cross-Platform. VC++ Compiler到目前为止只支持C89标准,而这个标准规定,变量必须在代码块(即通过大括号包围起来的代码块)的最前面声明,参考 http://stackoverflow.com/questions/13308944/how-to-simulate-c99-in-visual-studio-for-variables-declaration

嵌入式Linux模块移植四部曲

开发工作中由于产品使用的芯片方案改变,对应的程序接口和代码框架也变了,需要将原有产品方案中的功能模块移植到新的产品方案之中,以下就开发中实际的工作内容总结了一下模块移植的经验: 1.将整个模块(主要是进程.lib库)文件放到新的代码框架对应的目录下,主要修改模块makefile中的编译工具链.链接库路径,保证模块独立编译makefile不报错: 2.将模块中调用到旧接口的代码注视掉,边注释边编译,保证模块代码独立编译链接不报错,成功得到可执行目标文件.lib库文件: 3.逐级修改模块上层目录ma

016-1 模块-模块的加载顺序、导入执行流程

1.模块的加载顺序:内存=>内置=>sys.path import sys sys,path #环境变量:存放文件路径的列表 # 重点:默认列表的第一个元素就是当前被执行的问建所在的目录 # 可以自定义往sys.path添加路径sys.path.append(r'想导入的模块的绝对路径')  # 添加到环境变量最后,最后被查找sys.path.insert(0, r'想导入的模块的绝对路径')  # 添加到指定索引,索引就决定了自定义模块的查找顺序 2.模块的导入执行流程 导入模块的指令: -

Python模块动态加载机制

本文和大家分享的主要是python中模块动态加载机制相关内容,一起来看看吧,希望对大家学习python有所帮助. import 指令 来看看 import sys 所产生的指令: co_consts : (0, None) co_names : ('sys',) 0 LOAD_CONST               0 (0) 2 LOAD_CONST               1 (None) 4 IMPORT_NAME              0 (sys) 6 STORE_NAME  

Cocos2d-x移植到Android平台编译的两个文件Android.mk和Application.mk

背景 首先,说说文章的背景.最近手中的一个项目,由于需求中要求提供Web界面的打印功能,当然如果没有打印机,还可以提供保存到本地.项目组长把这个"小任务"分给了我.本着努力为组长分忧解难的思想,领了任务之后,就马上开始了工作. 问题 刚开始的时候,组长给了一个工具(jatoolsprinter)让我研究,我用了一个多小时的时间,做出了一个简单的Demo,然后就是各种的测试,由于 web 打印需要浏览器安装 ActiveX 组件,在随后的测试中,我用了几款浏览器,甚至把安全级别都调到了最

seajs2.3学习日志 简单尝试模板+数据合并、模块异步加载、非标准CMD模式定义define模块

今天继续尝试seajs 2.3的版本,那做点什么demo好呢,就来一个简单是数据模板吧,然后通过其他一些细节深入学习 先看看目录结构,按照官方demo架设 index.html只是简单入口文件和seajs的配置项,最下面有一个seajs.use加载crontroller模块,然后回调暴露的combine方法 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>

第十二篇:SOUI的utilities模块为什么要用DLL编译?

SOUI相对于DuiEngine一个重要的变化就是很多模块变成了一个单独的DLL. 然后很多情况下用户可能希望整个产品就是一个EXE,原来DuiEngine提供了LIB编译模式,此时链接LIB模式的DuiEngine就行了. 但是SOUI默认至少Utilities那个模块是不提供LIB编译模式的. utilities之所以默认只提供DLL编译是因为SString类是由utilities实现的. 字符串是编译中碰到的最最见的基本对象之一.在运行库(CRT)动态编译(MD,MDd)时这不是问题,因为

模块的加载启动

Sea.js 是一个模块加载器,模块加载器需要实现两个基本功能: 实现模块定义规范,这是模块系统的基础. 模块系统的启动与运行. 模块定义规范的实现 这就是 define,require,exports,module 的实现.具体实现细节,有兴趣的可以看 Sea.js 的源码:seajs/src.可以按照 Gruntfile.js 中声明的合并顺序阅读,核心是 module.js 文件. define 等方法的具体使用,请阅读:CMD 模块定义规范 模块系统的启动 有了 define 等模块定义