This question already has answers here:
Storing third-party libraries in source control

(17个答案)



Arguments for and against including 3rd-party libraries in version control? [closed]

(12个答案)


5个月前关闭。





通常,我曾经在版本控制中包括由芯片供应商(ST)提供的特定于设备的标头和源以及CMSIS-Core标头。它们并不多,我也没有更新它们的习惯。我使用STM32微控制器,但不使用CUBE框架或标准外设库。

最近,我需要使用CMSIS-DSP库。 CMSIS-DSP库带有大量的头文件和源文件。我决定使用预编译的库(libarm_cortexM4lf_math.a),该库约为5.4 MB。但是现在我开始质疑他们是否应该进入版本控制。

我知道在版本控制中管理二进制文件不是一个好主意。但是据我所知,CMSIS并不是经常更新。所以我很困惑。这些是我能想到的选择:


在回购中包含CMSIS标头和静态二进制文件:如果我决定不更新这些库,可能是个好主意。 CMSIS本身并不经常获得新版本,即使发布了新版本,也可能不需要在项目中对其进行更新。或者,在我在项目中更新它之前,我可能会跳过一些版本。
在回购中包含CMSIS标头和源文件:与选项1相似,但是git更适合于使用文本文件,而不是5 MB以上的二进制文件。但是我不确定让第三方代码更改来污染我的源历史记录是否是个好主意(选项1遇到相同的问题,但仅是头文件)。
不要在回购中包含CMSIS:这会产生干净的回购,但是克隆项目后,我必须手动将库文件复制到项目目录中。我还可以为CMSIS指定系统范围的安装文件夹,并将其添加到项目中,但这会导致“我的机器上工作”的情况。
找到一种自动获取库的方法:首先想到的是git子模块。但是,我不确定获取整个CMSIS存储库是否可以正常工作,因为由于许多不需要的文件(包括预编译的二进制文件),我需要对其进行重组。我想我需要某种后期处理脚本吗?


最好的方法是什么?还有其他选择吗?

这里有一个类似的问题:Storing third-party libraries in source control似乎人们对该主题有不同的看法。但是我相信在嵌入式C项目中使用CMSIS是一个特定的案例,应该提出自己的问题。

最佳答案

使用CMSIS的IMO嵌入式项目应包含使用的版本。 CMSIS的标准化程度不如C标准库,而且新版本通常与旧版本不兼容。

链接的帖子已有12年历史了,(IMO)回购的规模远不如当时那么重要。如今,嵌入式程序员使用的计算机的存储,内存,计算能力和上行链路连接带宽已无法与12年前使用的计算机相提并论。

关于git - CMSIS库是否应包含在版本控制中? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60010580/

10-13 05:50