CN111857725A - 一种Makefile文件生成方法、装置、设备及介质 - Google Patents
一种Makefile文件生成方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN111857725A CN111857725A CN202010692361.2A CN202010692361A CN111857725A CN 111857725 A CN111857725 A CN 111857725A CN 202010692361 A CN202010692361 A CN 202010692361A CN 111857725 A CN111857725 A CN 111857725A
- Authority
- CN
- China
- Prior art keywords
- file
- build
- target
- text
- makefile
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000004590 computer program Methods 0.000 claims description 10
- 230000002194 synthesizing effect Effects 0.000 claims description 4
- 238000012360 testing method Methods 0.000 description 15
- 238000011161 development Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002054 transplantation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种Makefile文件生成方法、装置、设备及计算机可读存储介质,方法包括:利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件;创建宏配置文件及通用配置文件;结合宏配置文件及通用配置文件对bulid.mk文本文件进行解析,得到目标文件及目标文件的编译信息;生成与软件项目对应的Makefile文件。本申请公开的上述技术方案,通过bulid.mk文本文件的创建、宏配置文件及通用配置文件的创建、结合宏配置文件及通用配置文件来对bulid.mk文本文件的解析而实现Makefile文件的自动生成,以提高Makefile文件的生成效率和生成准确性。
Description
技术领域
本申请涉及软件项目开发技术领域,更具体地说,涉及一种Makefile文件生成方法、装置、设备及计算机可读存储介质。
背景技术
Makefile是一种用来描述整个软件项目所有代码源文件编译和链接等规则的标准通用文件,其在几乎所有的软件项目都有使用。Makefile文件中包含了哪些源文件需要编译,哪些源文件不需要编译,哪些源文件需要先编译,哪些源文件需要后编译,哪些源文件需要重建等,所有和源文件编译相关的环节,都可以在Makefile文件中进行描述。
目前,对于Makefile文件,大多数采用手动编写的方式进行实现,但是,由于Makefile语法比较繁琐复杂,且对于中大型软件项目而言,Makefile文件数量繁多,因此,手动编写的方式则会降低Makefile文件的生成效率,并且容易出现编写错误。
综上所述,如何提高Makefile文件的生成效率和生成准确性,是目前本领域技术人员亟待解决的技术问题。
发明内容
有鉴于此,本申请的目的是提供一种Makefile文件生成方法、装置、设备及计算机可读存储介质,用于提高Makefile文件的生成效率和生成准确性。
为了实现上述目的,本申请提供如下技术方案:
一种Makefile文件生成方法,包括:
利用预设的语法格式在源文件的文件夹中创建bulid.mk文本文件;其中,所述源文件与软件项目相对应,所述bulid.mk文本文件中包括目标集合;
创建宏配置文件及通用配置文件;其中,所述宏配置文件用于表示所述目标集合中的目标文件是否进行编译,所述通用配置文件用于配置编译条件集合和头文件集合;
遍历所有所述文件夹中的所述bulid.mk文本文件,结合所述宏配置文件及所述通用配置文件对所述bulid.mk文本文件进行解析,得到所述目标文件及所述目标文件的编译信息;
根据所述目标文件及所述目标文件的编译信息生成与所述软件项目对应的Makefile文件。
优选的,结合所述宏配置文件及所述通用配置文件对所述bulid.mk文本文件进行解析,包括:
根据所述宏配置文件从当前文件夹的所述bulid.mk文本文件中抽取所述目标文件和需要继续遍历的子文件夹;
结合所述宏配置文件、所述通用配置文件中的所述编译条件集合和所述头文件集合解析所述目标文件的编译信息;
对需要继续遍历的子文件夹中的所述bulid.mk文本文件执行所述抽取所述目标文件和需要继续遍历的子文件夹的步骤,直至子文件夹的所述bulid.mk文本文件中仅包含目标文件且完成对所述目标文件的解析为止。
优选的,在结合所述宏配置文件、所述通用配置文件中的所述编译条件集合和所述头文件集合解析所述目标文件的编译信息之后,还包括:
在所述当前文件夹中创建tmp.mk文件,利用所述tmp.mk文件记录解析出的所述目标文件的编译信息;
相应地,根据所述目标文件及所述目标文件的编译信息生成与所述软件项目对应的Makefile文件,包括:
利用所有的所述tmp.mk文件合成所述Makefile文件。
优选的,结合所述宏配置文件及所述通用配置文件对所述bulid.mk文本文件进行解析,包括:
利用python脚本语言结合所述宏配置文件及所述通用配置文件对所述bulid.mk文本文件进行解析。
优选的,在利用python脚本语言结合所述宏配置文件及所述通用配置文件对所述bulid.mk文本文件进行解析时,还包括:
利用所述python脚本语言查找所述文件夹中的错误;其中,所述错误包括所述bulid.mk文本文件中不符合所述语法格式的书写错误、所述bulid.mk文本文件中所涉及的文件不存在、所述bulid.mk文本文件中的文件名重合、所涉及的子文件夹中缺失所述bulid.mk文本文件中的任意一种或任意多种。
优选的,在利用所述python脚本语言查找所述文件夹中的错误之后,还包括:
发出所述文件夹中存在错误的提示。
优选的,在利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件之后,还包括:
在预设文件夹的所述bulid.mk文本文件中设置编译条件集合和头文件集合;其中,位于所述预设文件夹中的编译条件集合和头文件集合用于作用于所述预设文件夹。
一种Makefile文件生成装置,包括:
第一创建模块,用于利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件;其中,所述源文件与软件项目相对应,所述bulid.mk文本文件中包括目标集合;
第二创建模块,用于创建宏配置文件及通用配置文件;其中,所述宏配置文件用于表示所述目标集合中的目标文件是否进行编译,所述通用配置文件用于配置编译条件集合和头文件集合;;
解析模块,用于遍历所有所述文件夹中的所述bulid.mk文本文件,结合所述宏配置文件及所述通用配置文件对所述bulid.mk文本文件进行解析,得到所述目标文件及所述目标文件的编译信息;
生成模块,用于根据所述目标文件及所述目标文件的编译信息生成与所述软件项目对应的Makefile文件。
一种Makefile文件生成设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任一项所述的Makefile文件生成方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项所述的Makefile文件生成方法的步骤。
本申请提供了一种Makefile文件生成方法、装置、设备及计算机可读存储介质,其中,该方法包括:利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件;其中,源文件与软件项目相对应,bulid.mk文本文件中包括目标集合;创建宏配置文件及通用配置文件;其中,宏配置文件用于表示目标集合中的目标文件是否进行编译,通用配置文件用于配置编译条件集合和头文件集合;遍历所有文件夹中的bulid.mk文本文件,结合宏配置文件及通用配置文件对bulid.mk文本文件进行解析,得到目标文件及目标文件的编译信息;根据目标文件及目标文件的编译信息生成与软件项目对应的Makefile文件。
本申请公开的上述技术方案,利用预先设定的语法格式在存储源文件的文件夹中创建包含目标集合的bulid.mk文本文件,并创建用于表示目标集合中的目标文件是否编译的宏配置文件、用于配置编译条件集合和头文件集合的通用配置文件,之后,遍历所有文件夹中的bulid.mk文本文件,并结合宏配置文件和通用配置文件对bulid.mk文本文件进行解析,以得到目标文件及目标文件的编译信息,并根据解析得到的结果生成Makefile文件,以通过bulid.mk文本文件的创建、宏配置文件及通用配置文件的创建、bulid.mk文本文件的解析而实现Makefile文件的自动生成,以减少Makefile文件生成过程的人为参与,从而提高Makefile文件的生成效率,并尽量避免出现Makefile文件生成错误,以提高Makefile文件的生成准确性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种Makefile文件生成方法的流程图;
图2为本申请实施例提供的对bulid.mk文本文件进行解析的流程图;
图3为本申请实施例提供的一种Makefile文件生成装置的结构示意图;
图4为本申请实施例提供的一种Makefile文件生成设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,其示出了本申请实施例提供的一种Makefile文件生成方法的流程图,本申请实施例提供的一种Makefile文件生成方法,可以包括:
S11:利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件;其中,源文件与软件项目相对应,bulid.mk文本文件中可以包括目标集合。
在软件项目开发时,软件开发工程师所创建的与软件项目对应的代码源文件会根据其功能属性而被分别放置在不同的文件夹中。在识别出源文件(具体为上述提及的与软件项目对应的代码源文件)所放置的文件夹之后,可以利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件,其中,bulid.mk是一种文件名,其可以用来描述源文件的编译相关内容(例如编译条件和编译方法等),而且所创建的bulid.mk文本文件中包括目标集合target。其中,对于目标集合target而言,其是表示在当前文件夹下哪些目标文件和子文件夹由某个宏来决定其是否需要编译,当宏等于ON时,则表示编译,当宏等于OFF时,则表示不编译(即宏相当于一个编译开关)。
需要说明的是,上述所提及的预设的语法格式的表示形式具体为:集合类型_$(宏)+=具体的对象,例如:对于bulid.mk文本文件中的目标集合target而言,其采用预设的语法格式可以表示为:
target_$(BUILD_TEST)+=a.o b.o
target_$(BULID_TEST)+=test/
target_$(BUILD_TEST)+=a.o b.o test/
其中,a.o、b.o、test/为源文件名和子文件夹示范例子,其代表在当前目录下的名字为a、b的源文件名,test/为当前目录下的子文件夹名,.o表示文件类型是目标文件,/表示是文件夹,$(BUILD_TEST)中宏BUILD_TEST的作用为开关,BUILD_TEST=ON表示此项被选择,BUILD_TEST=OFF表示此项不被选择。在表达式+=的右侧,.o文件和/文件夹可以混合排列,以提高目标集合及bulid.mk文本文件创建的灵活性。在采用该语法格式进行创建后,后续可以自动解析其中的哪些是目标文件,哪些是文件夹。
S12:创建宏配置文件及通用配置文件;其中,宏配置文件用于表示目标集合中的目标文件是否进行编译,通用配置文件用于配置编译条件集合和头文件集合。
考虑到在一个软件项目开发中,不仅需要包含所创建的bulid.mk文本文件,还需要包含宏配置文件和通用配置文件,因此,则可以在执行步骤S11的同时或之后创建宏配置文件和通用配置文件,以利用宏配置文件来定义上述所提及的宏,并利用通用配置文件来配置编译条件集合ccflags和头文件集合inc_paths。
其中,宏配置文件用于表示bulid.mk文本文件所包括的目标集合中的目标文件是否进行编译,在宏配置文件中,定义宏=ON或=OFF来控制bulid.mk文本文件中哪些目标件需要进行编译,哪些不需要进行编译,例如:BUILD_TEST=ON或者BUILD_TEST=OFF,具体地,在进行Makefile文件生成时可以根据软件项目需求来接收用户所定义的不同宏,并根据所接收到的宏来创建宏配置文件,需要说明的是,宏必须是英文字母大写,以便于后续解析时可以正常进行识别;通用配置文件中所配置的编译条件集合ccflags和头文件集合inc_paths是通用于全局的(即可以通用于所有的文件夹),而且编译条件集合ccflags包括所有与编译和链接相关的属性及条件,头文件集合inc_paths包括所有默认的头文件所在目录,因此,其也包含有编译所依赖的头文件所在目录。
另外,对于编译条件集合ccflags,其可以由某个宏(该宏具体可以位于宏配置文件中)来决定其是否会被选择,当宏等于ON时,则表示选择,当宏等于OFF时,则表示不选择,其对应的语法格式举例如下:
ccflags_$(BUILD_TEST)+=-Os-g
其中,-Os–g为编译器相关的编译选项。
对于头文件集合inc_paths,其用于定义项目默认头文件路径的文件夹,其语法格式举例如下:
inc_paths_$(BUILD_TEST)+=include/io/
其中,include/io/为头文件文件夹路径。
S13:遍历所有文件夹中的bulid.mk文本文件,结合宏配置文件及通用配置文件对bulid.mk文本文件进行解析,得到目标文件及目标文件的编译信息。
在执行完步骤S11和步骤S12之后,可以遍历所有文件夹中的bulid.mk文本文件,同时,可以结合所创建的宏配置文件和通用配置文件解析出每个bulid.mk文本文件中哪些.o目标文件需要编译和哪些/子文件夹需要继续遍历,并对需要遍历的子文件夹继续进行遍历,直至其子文件夹中的bulid.mk文本文件只包含.o目标文件为止,并通过解析得到目标文件的编译信息,具体为目标文件的编译条件和编译选项,包括.o目标文件所依赖的源文件和头文件,编译器以及编译器的编译选项。
S14:根据目标文件及目标文件的编译信息生成与软件项目对应的Makefile文件。
在对所有文件夹中的bulid.mk文本文件进行解析,以得到目标文件及目标文件的编译信息之后,可以利用所有目标文件及各目标文件对应的编译信息来生成与软件项目对应的Makefile文件,之后,则可以利用所生成的Makefile文件来编译产生最终的二进制代码,同时可以根据项目需求产生调试所需的调试文件等。
由上述过程可知,相较于现有技术需要手动编写Makefile文件,本申请可以通过自动创建bulid.mk文本文件、自动创建宏配置文件及通用配置文件、通过结合宏配置文件及通用配置文件来对遍历到的所有bulid.mk文本文件进行解析得到目标文件及目标文件的编译信息而自动地生成Makefile文件,因此,则可以降低Makefile文件的生成难度和复杂度,提高Makefile文件生成效率,并降低犯错率,提高Makefile文件生成准确性。另外,本申请进行Makefile文件生成的过程具有独立性,因此,其具备较强的可移植性,可在各种操作系统环境下轻松使用,且没有移植成本。
本申请公开的上述技术方案,利用预先设定的语法格式在存储源文件的文件夹中创建包含目标集合的bulid.mk文本文件,并创建用于表示目标集合中的目标文件是否编译的宏配置文件、用于配置编译条件集合和头文件集合的通用配置文件,之后,遍历所有文件夹中的bulid.mk文本文件,并结合宏配置文件和通用配置文件对bulid.mk文本文件进行解析,以得到目标文件及目标文件的编译信息,并根据解析得到的结果生成Makefile文件,以通过bulid.mk文本文件的创建、宏配置文件及通用配置文件的创建、bulid.mk文本文件的解析而实现Makefile文件的自动生成,以减少Makefile文件生成过程的人为参与,从而提高Makefile文件的生成效率,并尽量避免出现Makefile文件生成错误,以提高Makefile文件的生成准确性。
参见图2,其示出了本申请实施例提供的对bulid.mk文本文件进行解析的流程图。本申请实施例提供的一种Makefile文件生成方法,结合宏配置文件及通用配置文件对bulid.mk文本文件进行解析,可以包括:
根据宏配置文件从当前文件夹的bulid.mk文本文件中抽取目标文件和需要继续遍历的子文件夹;
结合宏配置文件、通用配置文件中的编译条件集合和头文件集合解析目标文件的编译信息;
对需要继续遍历的子文件夹中的bulid.mk文本文件执行抽取目标文件和需要继续遍历的子文件夹的步骤,直至子文件夹的bulid.mk文本文件中仅包含目标文件且完成对目标文件的解析为止。
在对当前文件夹中的bulid.mk文本文件进行解析时,可以结合宏配置文件中的宏来从当前文件夹中解析并抽取出需要编译的目标文件和需要继续遍历的子文件夹中,之后,对于目标文件,则可以结合宏配置文件中所定义的对应的宏、通用配置文件中的编译条件集合以及头文件集合来解析得到目标文件的编译信息(具体可以结合宏配置文件及编译条件集合来得到目标文件的编译条件相关信息,并结合宏配置文件及头文件集合得到目标头文件所依赖的头文件);对于需要继续遍历的子文件夹,则可以根据宏配置文件来对该需要继续遍历的子文件夹中的bulid.mk文本文件执行上述所提及的抽取目标文件和需要继续遍历的子文件夹的步骤,直至子文件夹中仅包含目标文件且结合宏配置文件、通用配置文件中的编译条件集合和头文件集合完成对目标文件的解析为止。
本申请实施例提供的一种Makefile文件生成方法,在结合宏配置文件、通用配置文件中的编译条件集合和头文件集合解析目标文件的编译信息之后,还可以包括:
在当前文件夹中创建tmp.mk文件,利用tmp.mk文件记录解析出的目标文件的编译信息;
相应地,根据目标文件及目标文件的编译信息生成与软件项目对应的Makefile文件,可以包括:
利用所有的tmp.mk文件合成Makefile文件。
在结合宏配置文件、通用配置文件中的编译条件集合和头文件集合解析目标文件的编译信息之后,可以在当前文件夹中创建一个临时的tmp.mk文件,利用该tmp.mk文件记录解析出的目标文件的编译信息,以便于后续可以直接根据所记录的目标文件的编译信息来生成Makefile文件。
相应地,在解析完所有的目标文件,并通过创建tmp.mk文件来完成对各目标文件的编译信息的记录之后,可以将所有的tmp.mk文件合成为与软件项目对应的Makefile文件。
本申请实施例提供的一种Makefile文件生成方法,结合宏配置文件及通用配置文件对bulid.mk文本文件进行解析,可以包括:
利用python脚本语言结合宏配置文件及通用配置文件对bulid.mk文本文件进行解析。
在本申请中,可以利用python脚本语言来结合宏配置文件及通用配置文件对bulid.mk文本文件进行解析,其中,python是一个高层次且结合了解释性、编译性、互动性和面向对象的脚本语言,采用该脚本语言进行解析可以降低Makefile文件的生成难度,且所生成的Makefile文件可读性强,可以直观地呈现项目源文件层级结构以及文件之间的依赖关系,从而便于促进开发工程师对整个软件项目结构的理解。
当然,也可以采用其他的脚本语言来对bulid.mk文本文件进行解析。
本申请实施例提供的一种Makefile文件生成方法,在利用python脚本语言结合宏配置文件及通用配置文件对bulid.mk文本文件进行解析时,还可以包括:
利用python脚本语言查找文件夹中的错误;其中,错误可以包括bulid.mk文本文件中不符合语法格式的书写错误、bulid.mk文本文件中所涉及的文件不存在、bulid.mk文本文件中的文件名重合、所涉及的子文件夹中缺失bulid.mk文本文件中的任意一种或任意多种。
在利用python脚本语言进行解析时,可以利用python脚本语言查找文件夹中的错误,其中,这里提及的错误具体可以为bulid.mk文本文件中不符合语法格式的书写错误、bulid.mk文本文件中所涉及的文件不存在、bulid.mk文本文件中的文件名重合、所涉及的子文件夹中缺失bulid.mk文本文件中的任意一种或任意多种,即当文件夹中存在上述任意一种或任意多种错误时,都可以通过python脚本语言进行发现,以便于及时对错误进行纠正,从而避免对软件项目的开发造成影响。
本申请实施例提供的一种Makefile文件生成方法,在利用python脚本语言查找文件夹中的错误之后,还可以包括:
发出文件夹中存在错误的提示。
在利用python脚本语言查找文件夹中的错误之后,可以发出文件夹中存在错误的提示,以便于开发工程师可以及时地发现错误,并对错误进行纠正。
本申请实施例提供的一种Makefile文件生成方法,在利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件之后,还可以包括:
在预设文件夹的bulid.mk文本文件中设置编译条件集合和头文件集合;其中,位于预设文件夹中的编译条件集合和头文件集合用于作用于预设文件夹。
在利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件之后,可以在预设文件夹(具体为预先根据软件项目需要而指定的特殊的文件夹)中的bulid.mk文本文件中设置编译条件集合和头文件集合,以使得所设置的编译条件集合和头文件集合可以仅作用于其所在的预设文件夹中的源文件,从而满足不同源文件需要不同编译条件的需求。
需要说明的是,这里提及的编译条件集合和头文件集合的表示形式与上述所提及的包含在通用配置文件中的编译条件集合和头文件集合的表示形式类似,在此不再赘述。
本申请实施例还提供了一种Makefile文件生成装置,参见图3,其示出了本申请实施例提供的一种Makefile文件生成装置的结构示意图,可以包括:
第一创建模块31,用于利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件;其中,源文件与软件项目相对应,bulid.mk文本文件中可以包括目标集合;
第二创建模块32,用于创建宏配置文件及通用配置文件;其中,宏配置文件用于表示目标集合中的目标文件是否进行编译,通用配置文件用于配置编译条件集合和头文件集合;
解析模块33,用于遍历所有文件夹中的bulid.mk文本文件,结合宏配置文件及通用配置文件对bulid.mk文本文件进行解析,得到目标文件及目标文件的编译信息;
生成模块34,用于根据目标文件及目标文件的编译信息生成与软件项目对应的Makefile文件。
本申请实施例提供的一种Makefile文件生成装置,解析模块33可以包括:
抽取单元,用于根据宏配置文件从当前文件夹的bulid.mk文本文件中抽取目标文件和需要继续遍历的子文件夹;
第一解析单元,用于结合宏配置文件、通用配置文件中的编译条件集合和头文件集合解析目标文件的编译信息;
执行单元,用于对需要继续遍历的子文件夹中的bulid.mk文本文件执行抽取目标文件和需要继续遍历的子文件夹的步骤,直至子文件夹的bulid.mk文本文件中仅包含目标文件且完成对目标文件的解析为止。
本申请实施例提供的一种Makefile文件生成装置,解析模块33还可以包括:
创建单元,用于在结合宏配置文件、通用配置文件中的编译条件集合和头文件集合解析目标文件的编译信息之后,在当前文件夹中创建tmp.mk文件,利用tmp.mk文件记录解析出的目标文件的编译信息;
相应地,生成模块34可以包括:
生成单元,用于利用所有的tmp.mk文件合成Makefile文件。
本申请实施例提供的一种Makefile文件生成装置,解析模块33可以包括:
第二解析单元,用于利用python脚本语言结合宏配置文件及通用配置文件对bulid.mk文本文件进行解析。
本申请实施例提供的一种Makefile文件生成装置,解析模块33还可以包括:
查找单元,用于在利用python脚本语言结合宏配置文件及通用配置文件对bulid.mk文本文件进行解析时,利用python脚本语言查找文件夹中的错误;其中,错误可以包括bulid.mk文本文件中不符合语法格式的书写错误、bulid.mk文本文件中所涉及的文件不存在、bulid.mk文本文件中的文件名重合、所涉及的子文件夹中缺失bulid.mk文本文件中的任意一种或任意多种。
本申请实施例提供的一种Makefile文件生成装置,解析模块33还可以包括:
提示单元,用于在利用python脚本语言查找文件夹中的错误之后,发出文件夹中存在错误的提示。
本申请实施例提供的一种Makefile文件生成装置,还可以包括:
设置模块,用于在利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件之后,在预设文件夹的bulid.mk文本文件中设置编译条件集合和头文件集合;其中,位于预设文件夹中的编译条件集合和头文件集合用于作用于预设文件夹。
本申请实施例还提供了一种Makefile文件生成设备,参见图4,其示出了本申请实施例提供的一种Makefile文件生成设备的结构示意图,可以包括:
存储器41,用于存储计算机程序;
处理器42,用于执行存储器41存储的计算机程序时可实现如下步骤:
利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件;其中,源文件与软件项目相对应,bulid.mk文本文件中包括目标集合;创建宏配置文件及通用配置文件;其中,宏配置文件用于表示目标集合中的目标文件是否进行编译,通用配置文件用于配置编译条件集合和头文件集合;遍历所有文件夹中的bulid.mk文本文件,结合宏配置文件及通用配置文件对bulid.mk文本文件进行解析,得到目标文件及目标文件的编译信息;根据目标文件及目标文件的编译信息生成与软件项目对应的Makefile文件。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时可实现如下步骤:
利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件;其中,源文件与软件项目相对应,bulid.mk文本文件中包括目标集合;创建宏配置文件及通用配置文件;其中,宏配置文件用于表示目标集合中的目标文件是否进行编译,通用配置文件用于配置编译条件集合和头文件集合;遍历所有文件夹中的bulid.mk文本文件,结合宏配置文件及通用配置文件对bulid.mk文本文件进行解析,得到目标文件及目标文件的编译信息;根据目标文件及目标文件的编译信息生成与软件项目对应的Makefile文件。
该计算机可读存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例提供的一种Makefile文件生成装置、设备及计算机可读存储介质中相关部分的说明可以参见本申请实施例提供的一种Makefile文件生成方法中对应部分的详细说明,在此不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种Makefile文件生成方法,其特征在于,包括:
利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件;其中,所述源文件与软件项目相对应,所述bulid.mk文本文件中包括目标集合;
创建宏配置文件及通用配置文件;其中,所述宏配置文件用于表示所述目标集合中的目标文件是否进行编译,所述通用配置文件用于配置编译条件集合和头文件集合;
遍历所有所述文件夹中的所述bulid.mk文本文件,结合所述宏配置文件及所述通用配置文件对所述bulid.mk文本文件进行解析,得到所述目标文件及所述目标文件的编译信息;
根据所述目标文件及所述目标文件的编译信息生成与所述软件项目对应的Makefile文件。
2.根据权利要求1所述的Makefile文件生成方法,其特征在于,结合所述宏配置文件及所述通用配置文件对所述bulid.mk文本文件进行解析,包括:
根据所述宏配置文件从当前文件夹的所述bulid.mk文本文件中抽取所述目标文件和需要继续遍历的子文件夹;
结合所述宏配置文件、所述通用配置文件中的所述编译条件集合和所述头文件集合解析所述目标文件的编译信息;
对需要继续遍历的子文件夹中的所述bulid.mk文本文件执行所述抽取所述目标文件和需要继续遍历的子文件夹的步骤,直至子文件夹的所述bulid.mk文本文件中仅包含目标文件且完成对所述目标文件的解析为止。
3.根据权利要求2所述的Makefile文件生成方法,其特征在于,在结合所述宏配置文件、所述通用配置文件中的所述编译条件集合和所述头文件集合解析所述目标文件的编译信息之后,还包括:
在所述当前文件夹中创建tmp.mk文件,利用所述tmp.mk文件记录解析出的所述目标文件的编译信息;
相应地,根据所述目标文件及所述目标文件的编译信息生成与所述软件项目对应的Makefile文件,包括:
利用所有的所述tmp.mk文件合成所述Makefile文件。
4.根据权利要求1至3任一项所述的Makefile文件生成方法,其特征在于,结合所述宏配置文件及所述通用配置文件对所述bulid.mk文本文件进行解析,包括:
利用python脚本语言结合所述宏配置文件及所述通用配置文件对所述bulid.mk文本文件进行解析。
5.根据权利要求4所述的Makefile文件生成方法,其特征在于,在利用python脚本语言结合所述宏配置文件及所述通用配置文件对所述bulid.mk文本文件进行解析时,还包括:
利用所述python脚本语言查找所述文件夹中的错误;其中,所述错误包括所述bulid.mk文本文件中不符合所述语法格式的书写错误、所述bulid.mk文本文件中所涉及的文件不存在、所述bulid.mk文本文件中的文件名重合、所涉及的子文件夹中缺失所述bulid.mk文本文件中的任意一种或任意多种。
6.根据权利要求5所述的Makefile文件生成方法,其特征在于,在利用所述python脚本语言查找所述文件夹中的错误之后,还包括:
发出所述文件夹中存在错误的提示。
7.根据权利要求1所述的Makefile文件生成方法,其特征在于,在利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件之后,还包括:
在预设文件夹的所述bulid.mk文本文件中设置编译条件集合和头文件集合;其中,位于所述预设文件夹中的编译条件集合和头文件集合用于作用于所述预设文件夹。
8.一种Makefile文件生成装置,其特征在于,包括:
第一创建模块,用于利用预设的语法格式在存储源文件的文件夹中创建bulid.mk文本文件;其中,所述源文件与软件项目相对应,所述bulid.mk文本文件中包括目标集合;
第二创建模块,用于创建宏配置文件及通用配置文件;其中,所述宏配置文件用于表示所述目标集合中的目标文件是否进行编译,所述通用配置文件用于配置编译条件集合和头文件集合;
解析模块,用于遍历所有所述文件夹中的所述bulid.mk文本文件,结合所述宏配置文件及所述通用配置文件对所述bulid.mk文本文件进行解析,得到所述目标文件及所述目标文件的编译信息;
生成模块,用于根据所述目标文件及所述目标文件的编译信息生成与所述软件项目对应的Makefile文件。
9.一种Makefile文件生成设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的Makefile文件生成方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的Makefile文件生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010692361.2A CN111857725A (zh) | 2020-07-17 | 2020-07-17 | 一种Makefile文件生成方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010692361.2A CN111857725A (zh) | 2020-07-17 | 2020-07-17 | 一种Makefile文件生成方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111857725A true CN111857725A (zh) | 2020-10-30 |
Family
ID=73002007
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010692361.2A Pending CN111857725A (zh) | 2020-07-17 | 2020-07-17 | 一种Makefile文件生成方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111857725A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113031962A (zh) * | 2021-03-23 | 2021-06-25 | 北京百度网讯科技有限公司 | 编译方法、编译装置、电子设备、存储介质和程序产品 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003005959A (ja) * | 2001-06-25 | 2003-01-10 | Hitachi Ltd | ソースプログラムのポーティング方法 |
WO2011054250A1 (zh) * | 2009-11-04 | 2011-05-12 | 中兴通讯股份有限公司 | 一种开发环境转换的方法及装置 |
CN102799437A (zh) * | 2012-07-18 | 2012-11-28 | 清华大学 | 一种编译脚本自动生成方法和自动生成装置 |
CN103279356A (zh) * | 2013-06-04 | 2013-09-04 | 百度在线网络技术(北京)有限公司 | Makefile文件的自动生成方法和装置 |
CN104866368A (zh) * | 2014-12-19 | 2015-08-26 | 北汽福田汽车股份有限公司 | 一种Makefile文件生成方法和装置 |
CN111309327A (zh) * | 2018-12-12 | 2020-06-19 | 厦门雅迅网络股份有限公司 | 应用程序的自动编译方法及计算机可读存储介质 |
-
2020
- 2020-07-17 CN CN202010692361.2A patent/CN111857725A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003005959A (ja) * | 2001-06-25 | 2003-01-10 | Hitachi Ltd | ソースプログラムのポーティング方法 |
WO2011054250A1 (zh) * | 2009-11-04 | 2011-05-12 | 中兴通讯股份有限公司 | 一种开发环境转换的方法及装置 |
CN102799437A (zh) * | 2012-07-18 | 2012-11-28 | 清华大学 | 一种编译脚本自动生成方法和自动生成装置 |
CN103279356A (zh) * | 2013-06-04 | 2013-09-04 | 百度在线网络技术(北京)有限公司 | Makefile文件的自动生成方法和装置 |
CN104866368A (zh) * | 2014-12-19 | 2015-08-26 | 北汽福田汽车股份有限公司 | 一种Makefile文件生成方法和装置 |
CN111309327A (zh) * | 2018-12-12 | 2020-06-19 | 厦门雅迅网络股份有限公司 | 应用程序的自动编译方法及计算机可读存储介质 |
Non-Patent Citations (1)
Title |
---|
周彩兰: "Linux-make 文件的自动生成", 《武汉理工大学学报·信息与管理工程版》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113031962A (zh) * | 2021-03-23 | 2021-06-25 | 北京百度网讯科技有限公司 | 编译方法、编译装置、电子设备、存储介质和程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10698682B1 (en) | Computerized software development environment with a software database containing atomic expressions | |
US9971577B2 (en) | Method and apparatus for code conversion | |
CN108762743B (zh) | 一种数据表操作代码生成方法及装置 | |
US11294665B1 (en) | Computerized software version control with a software database and a human database | |
CN110308900A (zh) | 页面路由文档的生成方法、装置、计算机设备及存储介质 | |
WO2010136763A1 (en) | Software development tool | |
Goldschmidt et al. | Classification of concrete textual syntax mapping approaches | |
CN116627429B (zh) | 一种汇编代码生成方法、装置及电子设备和存储介质 | |
CN110543299A (zh) | 一种云计算管理平台代码生成方法和装置 | |
US7284235B2 (en) | Creation of content versions using content layers | |
CN118245050B (zh) | 前端框架组件自动转换方法、系统、电子设备及存储介质 | |
CN111857725A (zh) | 一种Makefile文件生成方法、装置、设备及介质 | |
CN109947711B (zh) | 一种对ios项目开发过程中的多语言文件自动化管理方法 | |
CN110554860B (zh) | 一种软件项目自然语言编程接口nli的构造方法及代码生成方法 | |
CN116595967A (zh) | 一种基于文本的自然语言规则编写方法及相关装置 | |
KR20090011974A (ko) | 컴파일 대상 파일 추출 방법 | |
CN111158665A (zh) | 代码生成方法及装置、电子设备和存储介质 | |
CN114238227A (zh) | 软件项目源代码中文查找方法、系统及介质 | |
WO2019041889A1 (zh) | 一种词条修改方法和词条修改装置 | |
Andrews et al. | The formal definition of Modula-2 and its associated interpreter | |
Vysoký et al. | INGRID: Creating Languages in MPS from ANTLR Grammars | |
US20040205666A1 (en) | System and method for anticipated file editing | |
KR20110024996A (ko) | 위성 관제 시스템에서 위성 관제 운용 자동화를 위한 언어변환장치 및 방법 | |
JPH1083288A (ja) | テキストエディタ及び同テキストエディタのプログラムを記録した記録媒体 | |
JPH05197561A (ja) | コンパイル方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20201030 |