[发明专利]一种编译处理方法、装置及电子设备有效
申请号: | 201710791243.5 | 申请日: | 2017-09-05 |
公开(公告)号: | CN107608677B | 公开(公告)日: | 2020-11-03 |
发明(设计)人: | 陈虎 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王仲凯 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 编译 处理 方法 装置 电子设备 | ||
本申请实施例提供一种编译处理方法、装置及电子设备,对于大型项目划分成的多个模块对应的多个源代码文件,通过获得这多个源代码文件包含的预编译指令,从而据此获得这多个源代码文件存在的直接依赖关系和间接依赖关系,之后,筛选出使这多个源代码文件中存在的依赖关系数量变动最多的直接依赖关系,并将筛选出的直接依赖关系对应的预编译指令从相应的源代码文件删除,再采用前置声明的方式,更新当前的多个源代码文件,得到多个待编译源代码文件。可见,本申请通过减少多个源代码文件存在的依赖关系,从根源上达到了提高项目整体编译速度的效果,同时减少了开发中重编译情况出现的几率,减少了开发人员的工作量,缩短了整个项目的构建时间。
技术领域
本申请涉及项目编译应用领域,具体涉及一种编译处理方法、装置及电 子设备。
背景技术
C++是C语言的继承,既可以进行C语言的过程化程序设计,又可以进行 抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特 点的面向对象的程序设计。可见,C++同时兼具面向底层和面向对象两方面的 属性,使其成为大型项目(如大型游戏项目)的首选开发语言。
在实际应用中,一个大型项目通常不会作为一个整体工程进行编译,而 是将大型项目划分成多个模块,不同模块可以以静态库或动态库的方式进行 组织,并分别对各模块进行编译以及测试,这样,多个开发人员协作可以并 行开发一个大型项目,提高项目开发效率。
目前,随着用户对大型项目的功能要求越来越多,大型项目的模块以及 代码数量将不断增加,然而,由于大型项目中的各模块之间错综复杂的依赖 关系,在进行各模块的编译以及测试时,需要相应开发人员相互沟通并配合, 才能保证大型项目的可靠开发,这样就会经常出现“一次改动,整体重编” 的情况,不仅增大了开发人员的工作量,且使得整个项目构建时间过长,从 而无法满足产品快速迭代的需求。
发明内容
有鉴于此,本申请实施例提供一种编译处理方法、装置及电子设备,从 根源上提高了整个项目编译速度,同时减少了开发中重编译情况出现的几率, 减少了开发人员的工作量,缩短了整个项目的构建时间,满足了产品快速迭 代的需求。
为实现上述目的,本申请实施例提供如下技术方案:
本申请实施例提供了一种编译处理方法,所述方法包括:
获得目标项目的多个源代码文件,并确定所述多个源代码文件包含的预 编译指令;
利用确定的预编译指令,获得所述多个源代码文件存在的依赖关系,所 述依赖关系包括所述多个源代码文件各自存在的直接依赖关系,以及所述多 个源代码文件之间存在的间接依赖关系;
筛选使所述多个源代码文件中存在的依赖关系数量变动最多的直接依赖 关系,并将筛选出的直接依赖关系对应的预编译指令从相应的源代码文件删 除;
采用前置声明的方式,更新当前的多个源代码文件,得到多个待编译源 代码文件。
本申请实施例还提供了一种编译处理装置,所述装置包括:
第一获得模块,用于获得目标项目的多个源代码文件,并确定所述多个 源代码文件包含的预编译指令;
第二获得模块,用于利用确定的预编译指令,获得所述多个源代码文件 存在的依赖关系,所述依赖关系包括所述多个源代码文件各自存在的直接依 赖关系,以及所述多个源代码文件之间存在的间接依赖关系;
筛选模块,用于筛选使所述多个源代码文件中存在的依赖关系数量变动 最多的直接依赖关系;
处理模块,用于将筛选出的直接依赖关系对应的预编译指令从相应的源 代码文件删除;
修复模块,用于采用前置声明的方式,更新当前的多个源代码文件,得 到多个待编译源代码文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710791243.5/2.html,转载请声明来源钻瓜专利网。