一种文件转换方法、系统、终端及计算机可读存储介质与流程

    专利查询2026-05-07  4


    本发明涉及文件处理,尤其涉及一种文件转换方法、系统、终端及计算机可读存储介质。


    背景技术:

    1、在软件开发过程中,编译构建工具在管理和自动化编译过程中发挥着至关重要的作用。不同的项目和团队可能选择不同的编译构建工具,常见的包括gn(generate ninja)和cmake,gn是一种用于生成ninja文件的编译构建工具,gn的优势在于其简洁性和高效性,并被广泛用于openharmony等大型项目中,通过编写build.gn文件,可以实现对源代码、依赖关系和编译选项的管理。cmake是一种更为通用的编译构建工具,被广泛应用于c++项目中,具有跨平台支持和广泛的工具链集成能力,cmake的优势在于其灵活性和可扩展性,适用于各种规模的项目。

    2、然而,对于习惯使用gn的开发者来说,手动将gn生成的ninja文件转换为cmake文件,既耗时又容易出错,特别是当开发团队需要将项目迁移到使用cmake的环境时,由于缺少有效的转换工具,手动转换变得极为繁琐且容易出错,这在使用cmake作为编译构建工具的项目中带来了不便。

    3、因此,现有技术还有待于改进和发展。


    技术实现思路

    1、本发明的主要目的在于提供一种文件转换方法、系统、终端及计算机可读存储介质,旨在解决现有技术目前缺少从build.gn转换为cmake文件的工具,在使用cmake作为编译构建工具的项目中带来了不便的技术问题。

    2、为实现上述目的,本发明提供一种文件转换方法,所述一种文件转换方法包括如下步骤:

    3、解析gn生成的ninja文件,并从所述ninja文件中提取编译构建信息;

    4、根据所述编译构建信息生成中间数据文件,并将所述中间数据文件映射为cmake指令;

    5、根据所述cmake指令生成cmake文件,并将所述cmake文件保存到指定目录下。

    6、可选地,所述的一种文件转换方法,其中,所述解析gn生成的ninja文件,并从所述ninja文件中提取编译构建信息,具体包括:

    7、获取gn生成的ninja文件,解析所述ninja文件,并读取所述ninja文件中的文本内容;

    8、基于语法匹配规则从所述文本内容中提取编译构建信息,其中,所述编译构建信息包括编译目标、源代码文件信息、依赖库信息、编译选项和宏定义。

    9、可选地,所述的一种文件转换方法,其中,所述基于语法匹配规则从所述文本内容中提取编译构建信息,具体包括:

    10、通过正则表达式从所述文本内容中匹配build关键字行;

    11、根据所述build关键字行提取编译目标和源代码文件信息,并根据所述编译目标的描述项确定依赖库信息和编译选项。

    12、可选地,所述的一种文件转换方法,其中,所述根据所述编译构建信息生成中间数据文件,并将所述中间数据文件映射为cmake指令,具体包括:

    13、新建并初始化中间数据存储文件,对所述编译构建信息进行验证后写入所述中间数据存储文件中,生成中间数据文件;

    14、根据所述编译目标进行映射,生成用于定义输出文件类型及对应的源代码文件的cmake指令;

    15、根据所述源代码文件信息进行映射,生成用于指定源代码文件的位置和名称的cmake指令;

    16、根据所述依赖库信息进行映射,生成用于调用所需库文件的cmake指令;

    17、根据所述编译选项生成用于添加编译器标志和预处理器定义的cmake指令。

    18、可选地,所述的一种文件转换方法,其中,所述根据所述cmake指令生成cmake文件,具体包括:

    19、初始化所述cmake指令;

    20、在所述cmake指令中定义cmake的项目名称和版本信息,并根据所述cmake指令生成cmake文件。

    21、可选地,所述的一种文件转换方法,其中,所述将所述cmake文件保存到指定目录下,之前还包括:

    22、在所述cmake指令中定义cmake文件的保存目录,并对所述保存目录进行验证;

    23、在所述cmake指令中定义cmake文件的访问权限。

    24、可选地,所述的一种文件转换方法,其中,所述根据所述cmake指令生成cmake文件,并将所述cmake文件保存到指定目录下,之后还包括:

    25、将所述cmake指令进行打包,生成转换工具;

    26、将所述转换工具嵌入到gn中,当gn生成ninja文件后,自动调用所述转换工具将所述ninja文件转化为cmake文件。

    27、此外,为实现上述目的,本发明还提供一种文件转换系统,其中,所述一种文件转换系统包括:

    28、解析模块,用于解析gn生成的ninja文件,并从所述ninja文件中提取编译构建信息;

    29、映射模块,用于根据所述编译构建信息生成中间数据文件,并将所述中间数据文件映射为cmake指令;

    30、存储模块,用于根据所述cmake指令生成cmake文件,并将所述cmake文件保存到指定目录下。

    31、此外,为实现上述目的,本发明还提供一种终端,其中,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的文件转换程序,所述文件转换程序被所述处理器执行时实现如上所述的文件转换方法的步骤。

    32、此外,为实现上述目的,本发明还提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有文件转换程序,所述文件转换程序被处理器执行时实现如上所述的文件转换方法的步骤。

    33、本发明中,解析gn生成的ninja文件,并从所述ninja文件中提取编译构建信息;根据所述编译构建信息生成中间数据文件,并将所述中间数据文件映射为cmake指令;根据所述cmake指令生成cmake文件,并将所述cmake文件保存到指定目录下。本发明通过将整个转换过程打包成工具,并集成到gn中,实现了从gn编译架构到cmake编译架构的文件自动化、高效转换,提高了开发效率,减少了手动操作带来的错误风险,适用于需要在gn和cmake之间进行转换的各类软件项目,为开发者提供便利和可靠的解决方案。



    技术特征:

    1.一种文件转换方法,其特征在于,所述文件转换方法包括:

    2.根据权利要求1所述的文件转换方法,其特征在于,所述解析gn生成的ninja文件,并从所述ninja文件中提取编译构建信息,具体包括:

    3.根据权利要求2所述的文件转换方法,其特征在于,所述基于语法匹配规则从所述文本内容中提取编译构建信息,具体包括:

    4.根据权利要求2所述的文件转换方法,其特征在于,所述根据所述编译构建信息生成中间数据文件,并将所述中间数据文件映射为cmake指令,具体包括:

    5.根据权利要求1所述的文件转换方法,其特征在于,所述根据所述cmake指令生成cmake文件,具体包括:

    6.根据权利要求1所述的文件转换方法,其特征在于,所述将所述cmake文件保存到指定目录下,之前还包括:

    7.根据权利要求1所述的文件转换方法,其特征在于,所述根据所述cmake指令生成cmake文件,并将所述cmake文件保存到指定目录下,之后还包括:

    8.一种文件转换系统,其特征在于,所述文件转换系统包括:

    9.一种终端,其特征在于,所述终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的文件转换程序,所述文件转换程序被所述处理器执行时实现如权利要求1-7任一项所述的文件转换方法的步骤。

    10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有文件转换程序,所述文件转换程序被处理器执行时实现如权利要求1-7任一项所述的文件转换方法的步骤。


    技术总结
    本发明公开了一种文件转换方法、系统及终端,所述文件转换方法包括:解析GN生成的Ninja文件,并从所述Ninja文件中提取编译构建信息;根据所述编译构建信息生成中间数据文件,并将所述中间数据文件映射为CMake指令;根据所述CMake指令生成CMake文件,并将所述CMake文件保存到指定目录下。本发明通过将整个转换过程打包成工具,并集成到GN中,实现了从GN编译架构到CMake编译架构的文件自动化、高效转换,提高了开发效率,减少了手动操作带来的错误风险,适用于需要在GN和CMake之间进行转换的各类软件项目,为开发者提供便利和可靠的解决方案。

    技术研发人员:张守忠
    受保护的技术使用者:深圳开鸿数字产业发展有限公司
    技术研发日:
    技术公布日:2024/11/26
    转载请注明原文地址:https://tc.8miu.com/read-35433.html

    最新回复(0)