💌 所属专栏:【Python脚本随手笔记】
😀 作 者:我是夜阑的狗🐶
🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询!
💖 欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信 😘 😘 😘
文章目录
- 前言
- 一、"狂飙"思路
- 1.差分编译
- 二、实现差异分析
- 三、实现差分编译
- 总结
前言
大家好,又见面了,我是夜阑的狗🐶,本文是专栏【Python脚本随手笔记】专栏的第3篇文章;
今天的需求是通过 Git 获取修改的文件,针对这些文件进行单模块编译,从而加快编译速度,上篇已经讲解了如何获取改动文件在 gn 文件的编译组名,接下来就来讲解如何将该组名通过脚本进行单模块编译吧;
专栏地址:【Python脚本随手笔记】 , 此专栏是我是夜阑的狗对python脚本处理的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
一、"狂飙"思路
前面我们讲到了怎么拿到基于改动文件的gn编译组名,接下来就可根据该组名对项目进行单目标编译了从而实现编译速度的 “狂飙”,话不多说,让我们原文再续,书接上回吧。。
1.差分编译
差分编译(Incremental compilation)是一种编译技术,用于仅重新编译源代码中发生更改的部分,以提高编译效率。这可以减少整体编译时间,特别是在大型项目中。
差分编译通常使用以下步骤:
-
Step 1、初始编译:首次编译项目的所有源代码文件,生成目标文件或可执行文件。
-
Step 2、更改检测:在进行新一轮编译之前,系统会检测源代码文件中的更改。
-
Step 3、差异分析:检测到更改的文件将与之前的编译结果进行比较,以确定哪些部分需要重新编译。
-
Step 4、增量编译:只有受到更改影响的文件和相关依赖项会重新编译,然后生成更新后的目标文件或可执行文件。
差分编译可以显著提高大型项目的编译速度,尤其是在只有部分文件发生更改时。它通常被集成开发环境(IDE)和构建工具用于优化开发者的工作流程。
不同的编程语言和开发工具可能有不同的差分编译机制和工作流程。具体的实施方法取决于所使用的编程语言和开发环境。
二、实现差异分析
基于这个思路在结合gn提供的单目标编译就可实现。
#!/usr/bin/python3import os
import re
import sys
import glob
import subprocessdef 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'</