【技术实现步骤摘要】
一种编译处理方法、装置及电子设备
本申请涉及项目编译应用领域,具体涉及一种编译处理方法、装置及电子设备。
技术介绍
C++是C语言的继承,既可以进行C语言的过程化程序设计,又可以进行抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。可见,C++同时兼具面向底层和面向对象两方面的属性,使其成为大型项目(如大型游戏项目)的首选开发语言。在实际应用中,一个大型项目通常不会作为一个整体工程进行编译,而是将大型项目划分成多个模块,不同模块可以以静态库或动态库的方式进行组织,并分别对各模块进行编译以及测试,这样,多个开发人员协作可以并行开发一个大型项目,提高项目开发效率。目前,随着用户对大型项目的功能要求越来越多,大型项目的模块以及代码数量将不断增加,然而,由于大型项目中的各模块之间错综复杂的依赖关系,在进行各模块的编译以及测试时,需要相应开发人员相互沟通并配合,才能保证大型项目的可靠开发,这样就会经常出现“一次改动,整体重编”的情况,不仅增大了开发人员的工作量,且使得整个项目构建时间过长,从而无法满足产品快速迭代的需求。
技术实现思路
有 ...
【技术保护点】
一种编译处理方法,其特征在于,所述方法包括:获得目标项目的多个源代码文件,并确定所述多个源代码文件包含的预编译指令;利用确定的预编译指令,获得所述多个源代码文件存在的依赖关系,所述依赖关系包括所述多个源代码文件各自存在的直接依赖关系,以及所述多个源代码文件之间存在的间接依赖关系;筛选使所述多个源代码文件中存在的依赖关系数量变动最多的直接依赖关系,并将筛选出的直接依赖关系对应的预编译指令从相应的源代码文件删除;采用前置声明的方式,更新当前的多个源代码文件,得到多个待编译源代码文件。
【技术特征摘要】
1.一种编译处理方法,其特征在于,所述方法包括:获得目标项目的多个源代码文件,并确定所述多个源代码文件包含的预编译指令;利用确定的预编译指令,获得所述多个源代码文件存在的依赖关系,所述依赖关系包括所述多个源代码文件各自存在的直接依赖关系,以及所述多个源代码文件之间存在的间接依赖关系;筛选使所述多个源代码文件中存在的依赖关系数量变动最多的直接依赖关系,并将筛选出的直接依赖关系对应的预编译指令从相应的源代码文件删除;采用前置声明的方式,更新当前的多个源代码文件,得到多个待编译源代码文件。2.根据权利要求1所述的方法,其特征在于,所述筛选使所述多个源代码文件之间存在的依赖关系数量变动最多的直接依赖关系,包括:确定所述多个源代码文件中存在的直接依赖关系;统计删除每个确定的直接依赖关系后所述多个源代码文件当前存在的依赖关系数量;选择最少依赖关系数量对应的直接依赖关系为目标依赖关系。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:利用所述多个源代码文件存在的直接依赖关系和间接,构建关系网络图;相应地,所述筛选使所述多个源代码文件之间存在的依赖关系数量变动最多的直接依赖关系,包括:基于所述关系网络图,利用图遍历算法,确定使所述关系网络图的总边数变动最多的直接依赖关系对应的目标边。4.根据权利要求3所述的方法,其特征在于,所述基于所述关系网络图,利用图遍历算法,确定使所述关系网络图的总边数变动最多的直接依赖关系对应的目标边,包括:获得所述关系网络图中直接依赖关系对应边的第一总边数;删除所述关系网络图中直接依赖关系对应的第一边,更新所述关系网络图,并统计更新后的关系网络图中各依赖关系对应的边的第二总边数;确定所述关系网络的当前更新次数未达到所述第一总边数,选择所述关系网络图中其他直接依赖关系对应的边作为第一边,返回所述删除所述关系网络图中直接依赖关系对应的第一边,更新所述关系网络图,并统计更新后的关系网络图中各依赖关系对应的边的第二总边数步骤;确定所述关系网络的当前更新次数达到所述第一总边数,对统计的多个第二总边数进行比较;获得最小第二总边数对应的第一边作为目标边,并确定所述目标边对应的直接依赖关系。5.根据权利要求3所述的方法,其特征在于,所述基于所述关系网络图,利用图遍历算法,确定使所述关系网络图的总边数变动最多的直接依赖关系对应的目标边,包括:以所述关系网络图中每个顶点为根节点,获得相应的深度优先搜索DFS树;确定所述关系网络图中各直接依赖关系对应的边所在的DFS树的数量;选择所在DFS树的数量最多的边为目标边,并确定所述目标边对应的直接依赖关系。6.根据权利要求1所述的方法,其特征在于,所述采用前置声明的方式,更新当前的多个源代码文件,得到多个待编译源代码文件,包括:检测到当前的多个源代码文件中存在定义类型的头文件,在相应源代码文件的初始位置增加定义所述类型的前置声明;删除所述头文件中对所述类型的定义,并在所述头文件中进行模板声明,将所述类型的定义写入相应源代码文件中的实现文件中;通过指向实现的指针PIMPL模式,实现接口与实现的分离。7.根据权利要求1-6任意一项所述的方法,其特征在于,所述方法还包括:对得到多个待编译源代码文件进行编译,得到相应的目标文件;对得到的多个目标文件以及获取的库文件进行链接处理,得到所述目标项目的多个源代码文件一一对应的可执行文件。8.一种编译处理装置,其特征在于,所述装置包括:第一获得模块,用于获得目标项目的多个源代码文件,并确定所述多个源代码文件包含的预编译指令;第二获得模块,用于利用确定的预编译指令,获得所述多个源代码文件存在的依赖关系,所述依赖关系包括所述多个源代码文...
【专利技术属性】
技术研发人员:陈虎,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。