[发明专利]一种源代码文件编译方法及装置有效
申请号: | 201710858365.1 | 申请日: | 2017-09-21 |
公开(公告)号: | CN107678748B | 公开(公告)日: | 2020-05-12 |
发明(设计)人: | 符志清 | 申请(专利权)人: | 杭州迪普科技股份有限公司 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 北京博思佳知识产权代理有限公司 11415 | 代理人: | 陈蕾 |
地址: | 310051 浙江省杭*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 源代码 文件 编译 方法 装置 | ||
本申请提供一种源代码文件编译方法,所述方法包括:获取编译器发出的编译错误信息;根据所述编译错误信息获取对应的源代码文件信息;在所述编译错误信息中包含预设的编译信息内容、且所述编译错误信息是对所述源代码文件进行非首次编译所产生的编译错误信息的情况下,根据所述源代码文件信息,删除源代码文件对应的编译生成文件;在删除源代码文件对应的编译生成文件之后,调用编译器对所述源代码文件重新进行编译。与现有技术相比,会自动重新编译发生了无法找到源代码文件依赖的头文件的错误的源代码文件,提升了编译效率。
技术领域
本申请涉及计算机领域,尤其涉及一种源代码文件编译方法及装置。
背景技术
在大型开发项目中,为方便对其中成千上万个源代码文件进行统一编译,通常做法是通过编译脚本和Makefile文件结合的方式实现编译过程,其中高级语言编译过程一般分为如下阶段:预处理、编译、汇编、链接。对源代码文件进行了预处理、编译、汇编处理过程以后生成了对象文件,链接阶段将若干个对象文件合并为一个目标文件。在类UNIX环境中,根据开发人员输入的编译参数组织该项目中各模块的编译流程,调用GCC工具(GNUCompiler Collection,编程语言编译器)对各模块的源代码文件进行编译,最终将各模块的目标文件整合为一个统一的目标文件;而Makefile文件是配合GCC工具使用的配置文件,每个模块有一个独立的Makefile文件。开发人员通过在编译脚本中调用Make命令触发编译,Make命令会在各模块目录下寻找Makefile文件并按Makefile文件中指定的规则执行该模块的编译过程。Make Clean命令则用于删除该模块上次编译生成的各级目标文件。
现有方案的问题是在于,在实际开发维护项目过程中,开发人员并不限于修改源代码文件的内容,有可能修改头文件名称,其中头文件也有可能依赖其它的头文件。当修改源代码文件中依赖的源头文件的名称时,或在源头文件中添加新的被依赖头文件时,会导致头文件依赖关系发生改变,根据Makefile文件预先指定的对象文件对源代码文件和头文件的依赖关系,则会触发对源代码文件进行重新编译,此时编译器会因找不到已修改头文件名称的源头文件,或源头文件中添加的新的被依赖头文件而发生编译错误,并向终端界面给出相应的错误信息。例如将头文件A.h依赖的头文件B.h改名为头文件C.h,或者在头文件A.h新增被依赖头文件D.h时,若依赖头文件A.h的某xx.c源代码文件并未修改,根据Makefile文件根据预先指定的对象文件对xx.c源代码文件和头文件A.h的依赖关系,则会触发对xx.c源代码文件进行重新编译,此时编译器找不到头文件B.h或头文件D.h而发生编译错误,对象文件中并没有更新头文件A.h对头文件D.h的依赖关系。
现有的技术方案是通过编译脚本对每个源代码文件,即对xx.c文件,调用编译器执行预处理命令,即对源代码文件xx.c进行初步扫描,处理注释、宏、预编译指令和头文件依赖关系,生成一级目标文件xx.d文件;经过编译阶段、汇编阶段生成二级目标文件xx.o文件,从该一级目标文件xx.d文件中获取二级目标文件xx.o文件的被依赖项作为一级目标文件xx.d文件的被依赖项,写入三级目标文件xx.dep文件中,其中二级目标文件xx.o文件的被依赖项即相应的xx.c文件及该xx.c文件直接或间接依赖的所有头文件的列表。
现有技术方案的缺点是每次进行编译时,都需要为每个xx.c文件重新执行预处理生成新的一级目标文件xx.d文件,然后根据该新的一级目标文件xx.d文件中的依赖关系判断是否需要重新编译生成对应的二级目标文件xx.o文件。虽然修改基础模块的公共头文件名称或其对其它头文件的依赖关系发生改变时对编译流程影响较大,但是这一情况毕竟发生概率不高,按照现有技术方案进行编译时,降低了每次二次编译的效率。
发明内容
有鉴于此,本发明提供一种源代码文件编译方法及装置。
具体地,本发明是通过如下技术方案实现的:
一种源代码文件编译方法,所述方法包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州迪普科技股份有限公司,未经杭州迪普科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710858365.1/2.html,转载请声明来源钻瓜专利网。