【Python脚本随手笔记】 ---基于鸿蒙系统LiteOS实现差分编译脚本(下篇)

请添加图片描述

  • 💌 所属专栏:【Python脚本随手笔记】

  • 😀 作  者:我是夜阑的狗🐶

  • 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!

  • 💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘


前言

  大家好,又见面了,我是夜阑的狗🐶,本文是专栏【Python脚本随手笔记】专栏的第3篇文章;
  今天的需求是通过 Git 获取修改的文件,针对这些文件进行单模块编译,从而加快编译速度,上篇已经讲解了如何获取改动文件在 gn 文件的编译组名,接下来就来讲解如何将该组名通过脚本进行单模块编译吧;
  专栏地址:【Python脚本随手笔记】 , 此专栏是我是夜阑的狗对python脚本处理的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
  如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。


一、"狂飙"思路

  前面我们讲到了怎么拿到基于改动文件的gn编译组名,接下来就可根据该组名对项目进行单目标编译了从而实现编译速度的 “狂飙”,话不多说,让我们原文再续,书接上回吧。。

请添加图片描述

 1.差分编译

  差分编译(Incremental compilation)是一种编译技术,用于仅重新编译源代码中发生更改的部分,以提高编译效率。这可以减少整体编译时间,特别是在大型项目中。
  差分编译通常使用以下步骤:

  • Step 1、初始编译:首次编译项目的所有源代码文件,生成目标文件或可执行文件。

  • Step 2、更改检测:在进行新一轮编译之前,系统会检测源代码文件中的更改。

  • Step 3、差异分析:检测到更改的文件将与之前的编译结果进行比较,以确定哪些部分需要重新编译。

  • Step 4、增量编译:只有受到更改影响的文件和相关依赖项会重新编译,然后生成更新后的目标文件或可执行文件。

  差分编译可以显著提高大型项目的编译速度,尤其是在只有部分文件发生更改时。它通常被集成开发环境(IDE)和构建工具用于优化开发者的工作流程。
  不同的编程语言和开发工具可能有不同的差分编译机制和工作流程。具体的实施方法取决于所使用的编程语言和开发环境。

二、实现差异分析

  基于这个思路在结合gn提供的单目标编译就可实现。

#!/usr/bin/python3

import os
import re
import sys
import glob
import subprocess

def get_git_file_changes():
    try:
        # 运行 git diff 命令获取更改
        output = subprocess.check_output(['git', 'diff', '--name-only'])
        changes = output.decode().strip().split('\n')

        # 筛选出以 .c 或 .h .cpp结尾的文件
        c_h_files = [file for file in changes if file.endswith(('.c','.h','.cpp'</

相关推荐

  1. 基于python实现编译提升cpu与内存使用率的脚本

    2024-03-22 19:46:03       28 阅读
  2. Python脚本编程

    2024-03-22 19:46:03       35 阅读
  3. python脚本编写

    2024-03-22 19:46:03       35 阅读
  4. ffmpeg在centos系统下的源文件下载脚本编译脚本

    2024-03-22 19:46:03       59 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-22 19:46:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-22 19:46:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-22 19:46:03       87 阅读
  4. Python语言-面向对象

    2024-03-22 19:46:03       96 阅读

热门阅读

  1. SpringBoot自定义starter开发:定时任务报表开发

    2024-03-22 19:46:03       37 阅读
  2. Rust无法流行起来

    2024-03-22 19:46:03       45 阅读
  3. sqlite简单的增删改查

    2024-03-22 19:46:03       45 阅读
  4. 什么是设计模式?

    2024-03-22 19:46:03       43 阅读
  5. Springboot vue elementui 超市管理系统

    2024-03-22 19:46:03       37 阅读
  6. 位运算算法

    2024-03-22 19:46:03       41 阅读
  7. Python的反射机制

    2024-03-22 19:46:03       41 阅读
  8. python数据库封装调用

    2024-03-22 19:46:03       45 阅读
  9. 从SQL质量管理体系来看SQL审核(2) - SQL质量标准

    2024-03-22 19:46:03       46 阅读