[发明专利]一种编译处理方法、装置及电子设备有效
申请号: | 201710791243.5 | 申请日: | 2017-09-05 |
公开(公告)号: | CN107608677B | 公开(公告)日: | 2020-11-03 |
发明(设计)人: | 陈虎 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 王仲凯 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 编译 处理 方法 装置 电子设备 | ||
1.一种编译处理方法,其特征在于,所述方法包括:
获得目标项目的多个源代码文件,并确定所述多个源代码文件包含的预编译指令;
利用确定的预编译指令,获得所述多个源代码文件存在的依赖关系,所述依赖关系包括所述多个源代码文件各自存在的直接依赖关系,以及所述多个源代码文件之间存在的间接依赖关系,所述直接依赖关系是所述目标项目中通过预编译指令能够直接得到的源代码文件之间的依赖关系,所述间接依赖关系是所述目标项目中隐含的源代码文件之间的依赖关系;
筛选使所述多个源代码文件中存在的依赖关系数量变动最多的直接依赖关系,并将筛选出的直接依赖关系对应的预编译指令从相应的源代码文件删除;
采用前置声明的方式,更新当前的多个源代码文件,得到多个待编译源代码文件。
2.根据权利要求1所述的方法,其特征在于,所述筛选使所述多个源代码文件之间存在的依赖关系数量变动最多的直接依赖关系,包括:
确定所述多个源代码文件中存在的直接依赖关系;
统计删除每个确定的直接依赖关系后所述多个源代码文件当前存在的依赖关系数量;
选择最少依赖关系数量对应的直接依赖关系为目标依赖关系。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
利用所述多个源代码文件存在的直接依赖关系和间接,构建关系网络图;
相应地,所述筛选使所述多个源代码文件之间存在的依赖关系数量变动最多的直接依赖关系,包括:
基于所述关系网络图,利用图遍历算法,确定使所述关系网络图的总边数变动最多的直接依赖关系对应的目标边。
4.根据权利要求3所述的方法,其特征在于,所述基于所述关系网络图,利用图遍历算法,确定使所述关系网络图的总边数变动最多的直接依赖关系对应的目标边,包括:
获得所述关系网络图中直接依赖关系对应边的第一总边数;
删除所述关系网络图中直接依赖关系对应的第一边,更新所述关系网络图,并统计更新后的关系网络图中各依赖关系对应的边的第二总边数;
确定所述关系网络的当前更新次数未达到所述第一总边数,选择所述关系网络图中其他直接依赖关系对应的边作为第一边,返回所述删除所述关系网络图中直接依赖关系对应的第一边,更新所述关系网络图,并统计更新后的关系网络图中各依赖关系对应的边的第二总边数步骤;
确定所述关系网络的当前更新次数达到所述第一总边数,对统计的多个第二总边数进行比较;
获得最小第二总边数对应的第一边作为目标边,并确定所述目标边对应的直接依赖关系。
5.根据权利要求3所述的方法,其特征在于,所述基于所述关系网络图,利用图遍历算法,确定使所述关系网络图的总边数变动最多的直接依赖关系对应的目标边,包括:
以所述关系网络图中每个顶点为根节点,获得相应的深度优先搜索DFS树;
确定所述关系网络图中各直接依赖关系对应的边所在的DFS树的数量;
选择所在DFS树的数量最多的边为目标边,并确定所述目标边对应的直接依赖关系。
6.根据权利要求1所述的方法,其特征在于,所述采用前置声明的方式,更新当前的多个源代码文件,得到多个待编译源代码文件,包括:
检测到当前的多个源代码文件中存在定义类型的头文件,在相应源代码文件的初始位置增加定义所述类型的前置声明;
删除所述头文件中对所述类型的定义,并在所述头文件中进行模板声明,将所述类型的定义写入相应源代码文件中的实现文件中;
通过指向实现的指针PIMPL模式,实现接口与实现的分离。
7.根据权利要求1-6任意一项所述的方法,其特征在于,所述方法还包括:
对得到多个待编译源代码文件进行编译,得到相应的目标文件;
对得到的多个目标文件以及获取的库文件进行链接处理,得到所述目标项目的多个源代码文件一一对应的可执行文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710791243.5/1.html,转载请声明来源钻瓜专利网。