OpenOffice条件编译探讨
来源:互联网 发布:linux 统计文件夹 编辑:程序博客网 时间:2024/06/10 07:09
条件编译实现探讨
大型软件一般有条件编译宏,定制功能一般都会用编译宏加以限制。在PM出版本时,打开或关闭makefile文件中的编译开关,方便的实现功能的增减,以此快速定制版本。
OpenOffice由于不需要定制功能的开发,因此对具体功能没有引入条件编译。为了保留劳动成果、方便版本的定制,略做修改实现OpenOffice的条件编译。
一、实现思路:
为了方便管理需要找到一个全局的makefile文件,以现在的认识认为加在solenv模块中较为合适。Solenv 是各模块中唯一没有依赖关系的模块,即其不依赖与任何其它模块,看成是依赖树的根节点,其它的模块均要直接或间接的依赖于该节点.其它的模块均要直接或间接的依赖于该节点.编译整个工程时,该模块首先要被编译,然后依赖于该模块的子模块根据时间标签以及依赖规则实现编译.solenv是控制编译的核心,里面包含了不同的编译命令,编译文件类型,不同平台下的编译规则以及不同编译器的包等等.这些命令均是写在makefile文件中,这样写的优势在于在删除和添加不同的模块时,不需要修改solven中的编译规则,而仅仅修改下面子模块文件即可。
在子模块中,每个makefile文件开始总要包含settings.mk文件,该文件根据 不同的操纵系统(FreeBSD,windows unix),不同的编译器以及编译的文件套件版本设置了全局的宏, 会根据通过configure.guess文件得到的操作系统平台设置不同的宏.由于其全局关联性以及获取系统宏的特性,认为将条件编译宏定义在这里比较合适。
对于makefile文件中的条件编译则需要将编译宏写在congfigure后生成的对应平台的source文件中,如LinuxX86Env.Set.sh
对于xml语言文件则暂时没有找到方法来条件编译,只能复制一个文件的拷贝,引入这些资源文件的代码中使用条件编译宏区别导入。
二、实现DEMO:
a) 增加makefile文件定义条件编译宏:
添加文件/solenv/inc/conditional.mk
内容:
MKFILENAME:CONDITIONAL.MK
CSEFS += -DCONDITIONAL_TEST
b) 定义全局条件编译宏
在/solenv/inc/settings.mk中增加
.INCLUDE : conditional.mk
c)
在configure后生成的LinuxX86Env.Set.sh(此为环境LinuxX86下)文件中加入全局宏
CONDITIONAL_TEST = “true”
d) 在新增功能开发时使用:
#if define(CONDITIONAL_TEST)
新代码。。。。。
#else
旧代码(如果有的话)。。。。。
#endif
在所需修改的makefile文件中添加:
.IF "$(CONDITIONAL_TEST)"=="true"
新设置...
.ENDIF
如果某个版本不需要此功能就可以在conditional.mk将“CDEFS += -D CONDITIONAL_TEST”这一句注掉,代码可保留在主干版本上,供参考。特定版本需要此功能时再将宏放开。开发定制功能亦可以用宏括起来。出版本时修改makefile文件取舍功能,对版本进行定制。
此方案还在尝试与改进中,不断出现新的问题需要完善
- OpenOffice条件编译探讨
- openoffice编译
- openoffice源码编译顺序
- OpenOffice例子编译
- OpenOffice 编译日志
- OpenOffice编译资源地址
- 在fedora8下编译OpenOffice
- openoffice.org3.4 源代码 编译
- 在windows下编译openOffice
- 条件编译&条件属性
- 条件编译
- 条件编译
- 条件编译
- 条件编译
- 条件编译
- 条件编译
- 条件编译
- 条件编译
- gdb core调试
- 数据库中两列放到Map中使用
- asp.net 读取Excel数据并将数据插入到数据库中
- 枚举
- 高精度数值
- OpenOffice条件编译探讨
- 怎么取消win8的开机密码
- 装饰者模式
- poj_2676 Sudoku
- HDU2567:寻梦
- CF 312B(Archer-等比数列极限求和)
- Windows下配置SVN (Subversion)
- 杭电1242--Rescue--DFS 详解
- 查看和修改linux时区与时间