一种程序脚本编译方法和装置制造方法

文档序号:6622577阅读:250来源:国知局
一种程序脚本编译方法和装置制造方法
【专利摘要】本发明公开了一种程序脚本编译方法和装置,以解决现有技术中需通过文件操作无法实现快速获取编译信息的问题。所述方法包括:通过生成一个包含了定义为全局变量的编译信息的信息源代码,并在对程序源代码进行编译的同时,对所述信息源代码进行编译以将所述信息源代码与所述程序源代码进行链接,从而将编译信息作为全局变量定义在程序中;在程序运行的过程中,读取程序中的全局变量,即可获取编译信息,从而不需打开单独的一个文件查看编译信息,即不需要进行文件操作,就可以简单、快速的获取版本号、编译时间等编译信息。
【专利说明】一种程序脚本编译方法和装置

【技术领域】
[0001] 本发明属于计算机程序设计【技术领域】,具体涉及一种程序脚本编译方法和装置。

【背景技术】
[0002] 在程序设计的过程中,需要对程序的源代码进行编译。当对程序的源代码编译过 程结束时,通常要记录所编译的程序的版本号、编译时间等编译信息。当程序发布时,同时 发布编译信息。编译信息可以用来确认当前使用的版本是不是正常发布的版本,也可以用 来当程序出现某个问题时通过查看编译信息如版本号和编译时间等来确认所出现的问题 是否已在新版本上得以修正。
[0003] 当前的程序设计中,通常是将编译信息如版本号和编译时间等,写到一个单 独的文件中,并在该文件中对编译信息赋予相应的关键字,如:对版本号赋予关键字 "version",对编译时间赋予关键字"time"。这样,当运行程序时,打开这个文件,通过匹配 关键字就可以获取和查看编译信息。
[0004] 上述获取编译信息的过程,需要进行文件操作,即需要在程序运行中,打开一个文 件,才能查看编译信息,使用极不方便,不能简单、快速的获取编译信息。


【发明内容】

[0005] 本发明的目的是提供一种程序脚本编译方法和装置,不需进行文件操作,就可以 简单、快速的获取版本号、编译时间等编译信息。
[0006] 根据本发明的一个方面,提供一种程序脚本编译方法,包括:生成信息源代码,在 所述信息源代码中将编译信息定义为全局变量;
[0007] 将程序源代码和程序编译信息源代码一起编译;
[0008] 读取编译后的程序中的全局变量,获取编译信息。
[0009] 上述方案中,所述编译信息至少包括:编译程序的版本号和编译时间。
[0010] 上述方案中,所述生成信息源代码的步骤进一步包括:在程序的Makefile文件里 面,调用脚本,并通过所述脚本生成所述信息源代码。
[0011] 上述方案中,所述调用脚本并通过所述脚本生成信息源代码的步骤进一步包括:
[0012] 向所述脚本内写入获取编译程序的版本号和编译时间的代码以生成信息源代码, 其中,所述信息源代码至少包括以下内容:
[0013] cat>version. c〈〈E0V
[0014] char*-version = "版本号"
[0015] char*-time = "编译时间"
[0016] E0V ;
[0017] 其中,-version为定义的版本号全局变量;-time为定义的编译时间全局变量。
[0018] 根据本发明的另一个方面,提供一种程序脚本编译装置,包括:
[0019] 信息源代码生成模块,用于生成信息源代码,在所述信息源代码中将编译信息定 义为全局变量;
[0020] 编译链接模块,所述编译链接模块连接至所述信息源代码生成模块,用于将程序 源代码和程序编译信息源代码一起编译;
[0021] 编译信息读取模块,所述编译信息读取模块连接至所述编译链接模块,用于读取 编译后的程序中的全局变量,获取编译信息。
[0022] 上述方案中,所述编译信息至少包括:编译程序的版本号和编译时间。
[0023] 上述方案中,所述信息源代码生成模块通过下述方式生成信息源代码:在程序的 Makefile文件里面,调用脚本,并通过所述脚本生成所述信息源代码。
[0024] 上述方案中,所述信息源代码生成模块通过下述方式调用脚本并生成信息源代 码:
[0025] 向所述脚本内写入获取编译程序的版本号和编译时间的代码以生成信息源代码, 其中,所述信息源代码至少包括以下内容:
[0026] cat>version. c〈〈E0V
[0027] char*-version = "版本号"
[0028] char*-time = "编译时间"
[0029] EOV ;
[0030] 其中,-version为定义的版本号全局变量,-time为定义的编译时间全局变量。
[0031] 本发明所提供的程序脚本编译方法,通过生成一个包含了定义为全局变量的编译 信息的信息源代码,并在对程序源代码进行编译的同时,对信息源代码进行编译,并将信息 源代码与程序源代码编译后的程序进行链接,从而将编译信息作为全局变量定义在程序 中;在程序运行的过程中,读取程序中的全局变量,即可获取编译信息,而不需打开单独的 一个文件查看编译信息,即不需要进行文件操作,就可以简单、快速的获取版本号、编译时 间等编译信息。

【专利附图】

【附图说明】
[0032] 图1是现有技术中获取编译信息的程序脚本编译方法流程图;
[0033] 图2是本发明优选实施例的程序脚本编译方法流程图;
[0034] 图3是本发明优选实施例的程序脚本编译装置的结构示意图;
[0035] 图4是根据本发明优选实施例的程序脚本编译装置获取编译信息流程图。

【具体实施方式】
[0036] 为使本发明的目的、技术方案和优点更加清楚明了,下面结合【具体实施方式】并参 照附图,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发 明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本 发明的概念。
[0037] 图1是现有技术中获取编译信息的程序脚本编译方法流程图。
[0038] 如图1所示,现有技术中获取编译信息的程序脚本编译方法包括如下步骤:
[0039] 步骤S01,通过一个脚本使用echo命令将编译信息的关键字写到一个文件中。例 如,通过脚本编写echo命令echo-n "-version =">product,则product就是最终的文 件,-version就是写入文件中的关键字。
[0040] 步骤S02,通过echo命令在所述文件的编译信息的关键字下写入具体的编译参 数。例如,在-version下写入具体的版本号。
[0041] 步骤S03,在程序运行过程中,若查询编译信息,则打开所述文件,匹配关键字,读 取关键字下的编译信息。例如,程序运行的过程中,打开product文件,当想询版本号时,匹 配关键字-version, version下会显示相关版本号,则此时读取的具体的版本号即为要查 询的编译信息。由上可知,现有技术中获取编译信息的程序脚本编译方法需要进行文件操 作,即需要在程序运行中,打开一个文件,才能查看编译信息,使用极不方便,不能简单、快 速的获取编译信息。
[0042] 为克服上述缺陷,本发明提供一种程序脚本编译方法,该方法不需进行文件操作, 就可以简单、快速获取编译信息。
[0043] 图2是本发明优选实施例的程序脚本编译方法流程图。
[0044] 如图2所示,本发明实施例程序脚本编译方法包括如下步骤:
[0045] 步骤S11 :生成信息源代码,在所述信息源代码中将编译信息定义为全局变量;
[0046] 步骤S12 :将程序源代码和程序编译信息源代码一起编译;
[0047] 步骤S13 :读取编译后的程序中的全局变量,获取编译信息。
[0048] 这里,所述编译信息至少包括所编译的程序的版本号和编译时间。通过查看版本 号和编译时间等编译信息可确认当前使用的版本是不是正常发布的版本,如果版本号和编 译时间与关键字不匹配或与正常信息不相符,则版本不是正常发布的版本;当程序出现某 个问题时,也可以通过查看版本号和编译时间等编译信息来确认所出现的问题是否已在新 版本上得以修正,如果通过查看版本号和编译时间发现当前使用的版本不是最新版本,可 以查找当前程序的最新版本,从而判断所出现的问题是否在新版本上已经得以修正。编译 信息还可以包括其他用于确认程序版本的信息。
[0049] 步骤SI 1中,所述生成信息源代码,可以是在程序的Makefile文件中,调用脚本,通 过所调用的脚本生成信息源代码,该程序编译信息源代码将前述程序源代码的程序编译 信息定义为全局变量,例如编译版本号以及编译时间等,以便于后期的调用。例如,当编译 信息为版本号和编译时间时,可以调用脚本,向所述脚本内写入获取编译程序的版本号和 编译时间的代码。在本发明的一个优选实施例中,程序编译信息源代码的示例代码如下:
[0050] cat>version. c〈〈E0V
[0051] char*-version = "版本号"
[0052] char*-time = "编译时间"
[0053] E0V ; (1)
[0054] 其中,-version为定义的版本号全局变量;-time为定义的编译时间全局变量, 分别表示程序源代码的编译版本号以及编译时间,但本发明不限制于此。所述版本号为由 字母构成的字符串,例如f5.0 ;所述编译时间的格式可以为linux下的命令'date' + % a% d-% b-% y% R'',通过这一命令获取当前时间为编译时间,例如获取到的结果可以为:Tue 22-Apr-1414:160如此,版本号和编译时间等编译信息被定义为全局变量,从而可由当前程 序在全域范围内进行调用和读取,而无需单独生成一个保存编译信息的文件,也无需进行 单独的文件操作来读取编译信息。
[0055] 由此可知,在信息源代码中至少包括以下内容:程序的版本号和编译时间的获取 方法。需要说明的是,程序的版本号和编译时间的获取方法不限于式(1)中的举例,因此信 息源代码的内容还可以为其他形式,在此不再赘述。
[0056] 步骤S12中,对程序源代码,如Makefile,进行编译的同时,对信息源代码,如由所 调用的脚本生成的信息源代码,也一起进行编译,其中,当所述信息源代码为
[0057] cat>version. c〈〈E0V
[0058] char*-version = "版本号"
[0059] char*-time = "编译时间"
[0060] EOV ;
[0061] 时,所编译后的编译信息为C语言格式。当所调用的脚本所生成的信息源代码为 其他形式时,所编译后的编译信息也可为其他语言格式。例如,C++语言格式或java格式。 由于所述信息源代码中对程序的版本号和编译时间的定义类型是全局变量,进行编译的时 候可与全域中的其他程序源代码进行链接,从而在其他程序运行的过程中通过对全局变量 的访问实现对编译信息的读取,进而实现对编译信息的简单、快速的读取。
[0062] 本步骤中,通过程序源代码和程序编译信息源代码一起进行编译,可以通过全局 变量将程序源代码和程序编译信息源代码链接在一起,这样实际上是将体现程序编译信息 的全局变量编译到了程序源代码中,即程序里面包含了这两个变量。这样,在程序运行时, 可以方便的通过调用全局变量来获取有关程序的编译信息。相比于现有技术来说,可以不 用另外新建文件,避免执行文件的操作(打开,读取,修改等)导致的不便。
[0063] 本发明中,通过将包含了程序编译信息的程序编译信息源代码与程序源代码链接 在一起,并一起进行编译,使得在以后的程序修改、调试时,通过读取全局变量就可以获取 程序的编译时间以及编译版本信息,当程序出现问题时,可以通过查看版本号以及编译时 间确认该问题是不是在新版本上已经修正,也可以确认该版本是不是正常的发布版本。
[0064] 下面以一个具体的实施例,说明一下本发明实施例程序脚本编译方法的流程。
[0065] 在程序设计的生成程序源代码阶段,调用Makefile文件中的一个脚本,向所述脚 本内写入获取编译程序的版本号和编译时间的代码,生成下述信息源代码:
[0066] cat>version. c〈〈E0V
[0067] char*-version = "advertiser5· 0"
[0068] char*-time = "'date ( + % a% d~% b~% y% R,' "
[0069] EOV ;
[0070]从而将 "advertiser5. 0" 的版本号和命令 date ζ + % a% d~% h~% y % R, 所获取的当前时间所作为的编译时间两个编译信息定义为全局变量。
[0071] 在程序设计的程序源代码编译阶段,在对Makefile文件进行编译的同时,对信息 源代码
[0072] cat>version. c〈〈E0V
[0073] char*-version = "advertiser5· 0"
[0074] char*-time = "'date ( + % a% d~% b~% y% R,' "
[0075] EOV
[0076] 也进行编译,并将编译后的版本号和编译时间两个编译信息与其他程序进行链 接,从而使这两个全局变量可以在其他程序运行的情况下被全域调用。
[0077] 在程序设计的程序调试和发布阶段,随程序的发布,将版本号和编译时间同时进 行发布。
[0078] 在程序设计的运行阶段,通过全局变量的调用,查看版本号和编译时间。由于不需 要进行其他文件的操作,可以在程序运行的过程中,简单快速的实现对版本号和编译时间 等编译信息的调用和查看。
[0079] 在程序设计的维护阶段,通过全局变量的调用,查看版本号和编译时间,从而确认 版本是否正常,和/或,在当前程序出现问题的时候,确认所述问题是否在新版本中已经得 以修正。
[0080] 图3是本发明优选实施例的程序脚本编译装置的结构示意图。
[0081] 如图3所示,本发明实施例的程序脚本编译装置包括:
[0082] 信息源代码生成模块1,用于生成信息源代码,在所述信息源代码中将编译信息定 义为全局变量;
[0083] 所述生成信息源代码,可以是在程序的Makefile文件中,调用脚本,通过所调用的 脚本生成信息源代码。例如,当编译信息为版本号和编译时间时,可以调用脚本,向所述脚 本内写入获取编译程序的版本号和编译时间的代码,生成如下信息源代码:
[0084] cat>version. c〈〈E0V
[0085] char*-version = "版本号"
[0086] char*-time = "编译时间"
[0087] EOV ; (1)
[0088] 其中,-version为定义的版本号全局变量;-time为定义的编译时间全局变量。 版本号和编译时间等编译信息被定义为全局变量,从而可由当前程序在全域范围内进行调 用和读取,而无需单独生成一个保存编译信息的文件,也无需进行单独的文件操作来读取 编译信息。需要说明的是,所编译后的编译信息可以为式(1)中的C语言格式。当所调用 的脚本所生成的信息源代码为其他形式时,所编译后的编译信息也可为其他语言格式。例 如,C++语言格式或java格式。
[0089] 编译链接模块2,编译链接模块2连接至所述信息源代码生成模块1,用于将程序 源代码和程序编译信息源代码一起编译;
[0090] 编译信息读取模块3,编译信息读取模块3连接至所述编译链接模块2,用于读取 编译后的程序中的全局变量,获取编译信息。
[0091] 图4是根据本发明优选实施例的程序脚本编译装置获取编译信息流程图。
[0092] 如图4所示,在程序设计的生成程序源代码阶段,由编译信息获取装置的信息源 代码生成模块1执行步骤101,调用Makefile中的一个脚本,生成下述信息源代码:
[0093] cat>version. c〈〈E0V
[0094] char*-version = "advertiser5· 0,,
[0095] char*-time = "'date ( + % a% d~% b~% y% R,' "
[0096] EOV ;
[0097]从而将 "advertiser5. 0" 的版本号和命令 date ζ + % a% d~% h~% y % R, 所获取的当前时间所作为的编译时间两个编译信息定义为全局变量。
[0098] 在程序设计的程序源代码编译阶段,在对Makefile进行编译的同时,由编译信息 获取装置的编译链接模块2执行步骤102,对信息源代码
[0099] cat>version. c〈〈E0V
[0100] char*-version = "advertiser5. 0"
[0101] char*_time ="'date ( + % a% d~% b~% y% R,',,
[0102] EOV
[0103] 也进行编译,以实现将编译后的版本号和编译时间两个编译信息与其他程序进行 链接,从而使这两个全局变量可以在其他程序运行的情况下被全域调用。
[0104] 在程序设计的程序调试和发布阶段,随程序的发布,执行步骤103,将版本号和编 译时间同时进行发布。
[0105] 在程序设计的运行阶段,由编译信息获取模块的编译信息读取模块3执行步骤 104,通过全局变量的调用,查看版本号和编译时间。由于不需要进行其他文件的操作,可以 在程序运行的过程中,简单快速的实现对版本号和编译时间等编译信息的调用和查看。
[0106] 在程序设计的维护阶段,由编译信息获取模块的编译信息读取模块3执行步骤 105和步骤106,通过全局变量的调用,查看版本号和编译时间,从而确认版本是否正常,和 /或,在当前程序出现问题的时候,确认所述问题是否在新版本中已经得以修正。
[0107] 通过上述程序脚本编译方法和装置,通过生成一个包含了定义为全局变量的编译 信息的信息源代码,并在对程序源代码进行编译的同时,对信息源代码进行编译,并将信息 源代码与程序源代码编译后的程序进行链接,从而将编译信息作为全局变量定义在程序 中;在程序运行的过程中,读取程序中的全局变量,即可获取编译信息,而不需打开单独的 一个文件查看编译信息,即不需要进行文件操作,就可以简单、快速的获取版本号、编译时 间等编译信息。
[0108] 应当理解的是,本发明的上述【具体实施方式】仅仅用于示例性说明或解释本发明的 原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何 修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨 在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修 改例。
【权利要求】
1. 一种程序脚本编译方法,其特征在于,所述方法包括: 生成信息源代码,在所述信息源代码中将编译信息定义为全局变量; 将程序源代码和程序编译信息源代码一起编译; 读取编译后的程序中的全局变量,获取编译信息。
2.根据权利要求1所述的程序脚本编译方法,其特征在于,所述编译信息至少包括:编 译程序的版本号和编译时间。
3.根据权利要求1至3任一项所述的程序脚本编译方法,其特征在于,所述生成信息源 代码的步骤进一步包括:在程序的Makefile文件里面,调用脚本,并通过所述脚本生成所述 信息源代码。
4.根据权利要求3所述的程序脚本编译方法,其特征在于,所述调用脚本并通过所述 脚本生成信息源代码的步骤进一步包括: 向所述脚本内写入获取编译程序的版本号和编译时间的代码以生成信息源代码,其 中,所述信息源代码至少包括以下内容: cat>version. c<<EOV char*-version = "版本号" char*-time = "编译时间" EOV ; 其中,-version为定义的版本号全局变量;-time为定义的编译时间全局变量。
5. 一种程序脚本编译装置,其特征在于,所述装置包括: 信息源代码生成模块,用于生成信息源代码,在所述信息源代码中将编译信息定义为 全局变量; 编译链接模块,所述编译链接模块连接至所述信息源代码生成模块,用于将程序源代 码和程序编译信息源代码一起编译; 编译信息读取模块,所述编译信息读取模块连接至所述编译链接模块,用于读取编译 后的程序中的全局变量,获取编译信息。
6.根据权利要求5所述的程序脚本编译装置,其特征在于,所述编译信息至少包括:编 译程序的版本号和编译时间。
7.根据权利要求6或7所述的程序脚本编译装置,其特征在于,所述信息源代码生成模 块通过下述方式生成信息源代码:在程序的Makefile文件里面,调用脚本,并通过所述脚本 生成所述信息源代码。
8.根据权利要求7所述的程序脚本编译装置,其特征在于,所述信息源代码生成模块 通过下述方式调用脚本并生成信息源代码: 向所述脚本内写入获取编译程序的版本号和编译时间的代码以生成信息源代码,其 中,所述信息源代码至少包括以下内容: cat>version. c<<E0V char*-version = "版本号" char*-time = "编译时间" EOV ; 其中,-version为定义的版本号全局变量,-time为定义的编译时间全局变量。
【文档编号】G06F9/45GK104142846SQ201410382719
【公开日】2014年11月12日 申请日期:2014年8月6日 优先权日:2014年8月6日
【发明者】李鹏 申请人:汉柏科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1