一种编译脚本自动生成方法和自动生成装置的制作方法

文档序号:6373530阅读:235来源:国知局
专利名称:一种编译脚本自动生成方法和自动生成装置的制作方法
技术领域
本发明涉及计算机及电子信息技术领域,特别涉及一种编译脚本的自动生成方法和自动生成装置
背景技术
编译是程序开发的基础,但是常常书写编译脚本的工作较为繁琐,在目前有些自动编译技术(专利CN200910078001. 7),但该类技术针对的是网络编译;当前还存在一些对针对未知的待测设备的自动编译和配置技术(专利CN201110063214. X),另外一些自动编译技术则主要针对计算机数据进行检纠错(专利CN200410029487. 2)。但是针对计算机普通编程的编译脚本文件生成并未出现,在程序开发过程中,大家一般都是手动的编写顶级编译脚本(makefile和链接配置文件),并且在编写程序的过程中不断完善编译脚本文件
和链接内容,有时当用户的程序发生改变时,还需要修改对应的编译脚本,并且配置不正确时,则编译提示出错,因此本文设计的编译脚本自动生成装置可以自动生成编译脚本,用户写好程序后,只要调用一次即可完成编译脚本的自动配置。

发明内容
本发明旨在至少在一定程度上解决上述技术问题之一或至少提供一种有用的商业选择。为此,本发明的目的在于提出一种简单的可靠的编译脚本自动生成方法和自动生成装置。根据本发明实施例的编译脚本自动生成方法,包括A.根据用户修改项,生成源代码对应的顶层编译脚本;B.利用语法分析器,检查并识别出源文件中包含的头文件;C.向所述头文件所在的目录添加子编译脚本;D.向所述头文件的父目录逐级添加编译脚本,直至顶层目录;以及E.根据所述头文件的引用结构生成链接脚本。在本发明的编译脚本自动生成方法的一个实施例中,步骤A进一步包括:A1.根据所述源代码的扩展名指定编译工具;A2.利用所述编译工具,根据用户修改项,生成工程项目的根目录下的顶层编译脚本。在本发明的编译脚本自动生成方法的一个实施例中,所述用户修改项包括包含库路径、目标文件名、目标文件类型。在本发明的编译脚本自动生成方法的一个实施例中,所述语法分析器以用户设定的主函数入口的文件为起点,开始检查并识别所述头文件。在本发明的编译脚本自动生成方法的一个实施例中,若识别出多个所述头文件,则利用递归算法按照深度优先策略对所述多个所述头文件执行步骤C至步骤D。在本发明的编译脚本自动生成方法的一个实施例中,所述步骤E还包括当软件需要使用自定义库时,程序员通过配置界面告知用户所述自定义库链接,随后结合步骤B中的所述头文件的引用结构生成链接文件。综上,顶级编译脚本的生成可以参考cmake的生成方案,对于子文件夹中的子编译脚本生成主要包括识别出需要生成添加编译脚本的目录,并在上一级编译脚本中加入需要编译的子目录。通过本发明的编译脚本自动生成方法,可以有效的提高用户编译效率,减少书写编译脚本的重复而又枯燥的工作,同时减少因为编译脚本书写不正确带来的意外错误,从而减少程序员的工作量。根据本发明实施例的编译脚本自动生成装置,包括顶层编译脚本生成模块,用于根据用户修改项,生成源代码对应的顶层编译脚本;语法分析器,用于检查并识别出源文件中包含的头文件;添加模块,用于向所述头文件所在的目录自动添加子编译脚本,并向所述头文件的父目录自动逐级添加编译脚本,直至顶层目录;以及生成模块,用于根据所述头文件的引用结构自动生成链接脚本。在本发明的编译脚本自动生成装置的一个实施例中,所述顶层编译脚本生成模块根据所述源代码的扩展名指定编译工具,以及利用所述编译工具,根据用户修改项,生成工程项目的根目录下的顶层编译脚本。在本发明的编译脚本自动生成装置的一个实施例中,所述用户修改项包括包含库路径、目标文件名、目标文件类型。 在本发明的编译脚本自动生成装置的一个实施例中,所述语法分析器以用户设定的主函数入口的文件为起点,开始检查并识别所述头文件。在本发明的编译脚本自动生成装置的一个实施例中,若所述语法分析器识别出多个所述头文件,则所述添加模块利用递归算法按照深度优先策略对所述多个所述头文件执行添加模块的操作。在本发明的编译脚本自动生成装置的一个实施例中,所述生成模块中,当软件需要使用自定义库时,程序员通过配置界面告知用户所述自定义库链接,随后结合所述头文件的引用结构生成链接文件。通过本发明的编译脚本自动生成装置,可以有效的提高用户编译效率,减少书写编译脚本的重复而又枯燥的工作,同时减少因为编译脚本书写不正确带来的意外错误,从而减少程序员的工作量。本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。


本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中图I是本发明实施例的编译脚本自动生成方法的流程示意图;图2是本发明实施例的编译脚本自动生成方法的详细流程图;和图3是本发明实施例的编译脚本自动生成装置的结构框图。
具体实施例方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
图I为本发明实施例的编译脚本自动生成方法的流程示意图。如图I所示,该方法包括以下步骤步骤S101.根据用户修改项,生成源代码对应的顶层编译脚本。具体地,首先根据源代码的扩展名指定编译工具;其次利用编译工具,根据用户修改项,生成工程项目的根目录下的顶层编译脚本。其中,用户修改项包括包含库路径、目标文件名、目标文件类型。步骤S102.利用语法分析器,检查并识别出源文件中包含的头文件。具体地,初始化用户设定的主函数入口的文件为起点,用语法分析器开始检查并识别头文件。步骤S103.向头文件所在的目录添加子编译脚本。具体地,将程序所需的编译脚本复制到此目录中,并根据实际的目录名和目录结构进行修正。步骤S104.向头文件的父目录逐级添加编译脚本,直至顶层目录。通过此步骤可以将当前目录增加到编译的范围中,若此前该目录以及添加到编译目录中,则可以终止当前步骤。需要说明的是,若语法分析器识别出多个头文件,则利用递归算法按照深度优先策略对多个头文件执行步骤S103至步骤S104。步骤S105.根据头文件的引用结构生成链接脚本。在本发明的一个实施例中,当软件需要使用自定义的动态或静态库时,程序员通过配置界面告知用户所述自定义库链接,即该库通过配置的形式结合到此方法中,随后结合步骤B中的所述头文件的引用结构生成链接文件。综上,顶级编译脚本的生成可以参考cmake的生成方案,对于子文件夹中的子编译脚本生成主要包括识别出需要生成添加编译脚本的目录,并在上一级编译脚本中加入需要编译的子目录。通过本发明的编译脚本自动生成方法,可以有效的提高用户编译效率,减少书写编译脚本的重复而又枯燥的工作,同时减少因为编译脚本书写不正确带来的意外错误,从而减少程序员的工作量。图2为本发明实施例的编译脚本自动生成方法的详细流程图,对图I作了进一步细化。为了更好的说明子编译脚本的生成,以makefile为例进行阐释。子文件夹中的makefile需要说明编译的子文件夹中需要包含哪些文件夹,同时以何种规则执行本次编译操作。一个简单的makefile示例如下所示
权利要求
1.一种编译脚本自动生成方法,包括 A.根据用户修改项,生成源代码对应的顶层编译脚本; B.利用语法分析器,检查并识别出源文件中包含的头文件; C.向所述头文件所在的目录自动添加子编译脚本; D.向所述头文件的父目录自动逐级添加编译脚本,直至顶层目录;以及 E.根据所述头文件的引用结构自动生成链接脚本。
2.如权利要求I所述的编译脚本自动生成方法,其特征在于,所述步骤A进ー步包括 Al.根据所述源代码的扩展名指定编译工具; A2.利用所述编译工具,根据用户修改项,生成工程项目的根目录下的顶层编译脚本。
3.如权利要求I所述的编译脚本自动生成方法,其特征在于,所述用户修改项包括包含库路径、目标文件名、目标文件类型。
4.如权利要求I所述的编译脚本自动生成方法,其特征在于,所述语法分析器以用户设定的主函数入口的文件为起点,开始检查并识别所述头文件。
5.如权利要求I所述的编译脚本自动生成方法,其特征在于,若识别出多个所述头文件,则利用递归算法按照深度优先策略对所述多个所述头文件执行步骤C至步骤D。
6.如权利要求I所述的编译脚本自动生成方法,其特征在于,所述步骤E还包括 当软件需要使用自定义库吋,程序员通过配置界面告知用户所述自定义库链接,随后结合步骤B中的所述头文件的引用结构生成链接文件。
7.一种编译脚本自动生成装置,包括 顶层编译脚本生成模块,用于根据用户修改项,生成源代码对应的顶层编译脚本; 语法分析器,用于检查并识别出源文件中包含的头文件; 添加模块,用于向所述头文件所在的目录自动添加子编译脚本,并向所述头文件的父目录自动逐级添加编译脚本,直至顶层目录;以及 生成模块,用于根据所述头文件的引用结构自动生成链接脚本。
8.如权利要求7所述的编译脚本自动生成装置,其特征在于,所述顶层编译脚本生成模块根据所述源代码的扩展名指定编译工具,以及利用所述编译工具,根据用户修改项,生成工程项目的根目录下的顶层编译脚本。
9.如权利要求7所述的编译脚本自动生成装置,其特征在于,所述用户修改项包括包含库路径、目标文件名、目标文件类型。
10.如权利要求7所述的编译脚本自动生成装置,其特征在于,所述语法分析器以用户设定的主函数入口的文件为起点,开始检查并识别所述头文件。
11.如权利要求7所述的编译脚本自动生成装置,其特征在于,若所述语法分析器识别出多个所述头文件,则所述添加模块利用递归算法按照深度优先策略对所述多个所述头文件执行添加模块的操作。
12.如权利要求I所述的编译脚本自动生成装置,其特征在于,所述生成模块中,当软件需要使用自定义库吋,程序员通过配置界面告知用户所述自定义库链接,随后结合所述头文件的引用结构生成链接文件。
全文摘要
本发明提出一种编译脚本自动生成方法及装置,其中该方法包括:根据用户修改项,生成源代码对应的顶层编译脚本;利用语法分析器,检查并识别出源文件中包含的头文件;向头文件所在的目录添加子编译脚本;向头文件的父目录逐级添加编译脚本,直至顶层目录;以及根据头文件的引用结构生成链接脚本。本发明可以有效的提高用户编译效率,减少书写编译脚本的重复而又枯燥的工作,同时减少因为编译脚本书写不正确带来的意外错误,从而减少程序员的工作量。
文档编号G06F9/44GK102799437SQ20121025010
公开日2012年11月28日 申请日期2012年7月18日 优先权日2012年7月18日
发明者胡事民, 刘虎球 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1