diff --git a/README.md b/README.md index ecdaa15..ab16784 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,94 @@ ## 写在前面 -新代码架构使用cmake配合cubeide编译,使用cubemx修改ioc配置的方式进行维护。需要将cubeide升级至v2版本,由于v2起cubeide与cubemx分成了两个独立软件,因此如果要修改ioc配置的话还需要额外安装cubemx。安装包在部门共享文件夹内的`/vol1/@team/SW_Group/STM32相关文件及安装包等`有安装包。 +新代码架构使用cmake配合cubeide编译,使用cubemx修改ioc配置的方式进行维护。需要将cubeide升级至v2版本,由于v2起cubeide与cubemx分成了两个独立软件,因此如果要修改ioc配置的话还需要额外安装cubemx。安装包在部门共享文件夹内的`/vol1/@team/SW_Group/STM32相关文件及安装包等`有安装包。考虑到易维护性以及代码授权问题,该工程采用了Git submodule的方式来确保公共部分代码不会被随意修改,所以需要先引入git的部分知识。 -### 使用cubeide导入工程 +## Git使用 + +在软件开发过程中经常会遇到迭代修改问题:即在一个项目中反复修改或优化某一个功能,代码变动很大,然后最后甲方的一句”我觉得还是用最开始那一版吧”经常把我们搞得焦头烂额。而业界一般常用git或svn来进行代码维度的版本管理,我们目前内部在用的是郭大佬搭建的[git平台](http://123.207.52.103:3000/),但是据我调研,大家目前都在把git当作一个云盘来使用而忽略了它的很多高级功能,此文章目的在于带大家了解一些git的基础操作和进阶操作。这里优先讲解我用到过的,其他的待大家完善。 + +### 安装Git(Windows下) + +在[飞牛](http://192.168.18.234:5666/)的`/vol1/@team/SW_Group/提效软件`目录下(也就是主界面进去后依次点击**文件管理->团队文件->SW_Group->提效软件**)找到`Git-2.34.1-64-bit.exe`安装包并进行安装,安装选项较多无脑点下一步即可,当然也可以问一下AI那些选项都是什么意思让它给提提建议但一般都无伤大雅。 + +然后由于git默认的图形化界面很蠢,这里建议大家使用vscode的图形化界面进行日常代码提交。不过由于vscode插件不支持submodule命令,所以首次拉取工程时还是需要用到git命令行,大家继续往下看就知道了。 + +### 使用vscode的git插件拉取工程 + +vscode是自带git插件的,可以很方便地进行git基础操作,接下来演示如何从git远程仓库拉取本工程代码。 + +1. 新建一个文件夹用vscode打开。 + +2. vscode切换到git视图点击初始化按钮,如下图所示: + + ![image-20261012104010595](typora/image-20261012104010595.png) + +3. 然后依次点击这里的三个点,`Remote`和`Add Remote`,如下图所示: + + ![image-20261012104115587](typora/image-20261012104115587.png) + +4. 顶部会有一个位置让你输入git链接,我们输入`http://123.207.52.103:3000/LiZongdi/robot_h743.git`**按回车**,然后又会有一个文本框,这是给我们的本地仓库取名字的,一般习惯输入`origin`**按回车** + +5. 本地仓库与远程仓库建立完联系之后,然后还是按下图所示顺序点击按钮进行拉取操作(也就是下载代码) + + ![image-20261012104614719](typora/image-20261012104614719.png) + +6. 到这里就拉取完成了,然后大家会发现直接编译是不行的,因为robot文件夹下没有内容,这就是前文说到的submodule。简单来说就是git支持将另一个仓库作为子模块链接,这样再配合给不同的子模块不同的读写权限,就实现了代码的分层管理。vscode插件不支持git的submodule系列命令,所以大家要借助命令行操作(可以直接跳转到下一节第三步)。 + +### 使用git命令行拉取工程 + +除了使用插件之外,笔者还是更习惯使用命令行拉取仓库,这里重新讲解一下。 + +1. 还是新建文件夹,然后在文件夹内部右键**Git Bash Here**,安装完git后一般就会默认有这个选项了。随后会打开一个命令行交互界面。 + + ![image-20261012110045631](typora/image-20261012110045631.png) + +2. 依次输出如下命令(#号及其后汉字是注释不用输入): + + ```shell + git init #对应上一节的第二步初始化 + git remote add origin http://123.207.52.103:3000/LiZongdi/robot_h743.git #对应上一节的第三四步关联仓库 + git pull origin master #对应上一节的第五步拉取仓库 + ``` + + 随后会看到类似如下输出(拉取需要时间可能需要几秒钟) + + ```shell + remote: Counting objects: 1043, done. + remote: Compressing objects: 100% (923/923), done. + remote: Total 1043 (delta 341), reused 636 (delta 95) + Receiving objects: 100% (1043/1043), 4.12 MiB | 929.00 KiB/s, done. + Resolving deltas: 100% (341/341), done. + From http://123.207.52.103:3000/LiZongdi/robot_h743 + * branch master -> FETCH_HEAD + * [new branch] master -> origin/master + ``` + + 这就表示拉取完成了 + +3. 接下来拉取子库,输入如下命令: + + ```shell + git submodule update --init --recursive #update命令表示根据分支信息更新子库,init表示初始化子库(即首次拉取),recursive表示递归处理子库中包含的子子库。 + ``` + + 这次需要的时间可能更长,输出类似: + + ```shell + Submodule 'robot' (http://123.207.52.103:3000/LiZongdi/robot.git) registered for path 'robot' + Cloning into 'D:/vedio/robot_old/robot'... + Submodule path 'robot': checked out 'ce5f7173b646b2fe0685798ef177f181b2dcca23' + Submodule 'project' (http://123.207.52.103:3000/LiZongdi/project.git) registered for path 'robot/project' + Submodule 'project_old' (http://123.207.52.103:3000/LiZongdi/project_old.git) registered for path 'robot/project_old' + Cloning into 'D:/vedio/robot_old/robot/project'... + Cloning into 'D:/vedio/robot_old/robot/project_old'... + Submodule path 'robot/project': checked out '86e867c5d8efd261ce78e0ee480771e8b6e8a7f7' + Submodule path 'robot/project_old': checked out '63e4150140333db80803088c1c56b01be5a9b994' + ``` + + 到这里大家就可以继续回去用vscode插件进行提交等操作了。vscode图形化插件在这方面的优势还是很大的。 + +## 使用cubeide导入工程 1. 打开cubeidev2版本 2. 依次点击顶部面板的File-->Import打开导入界面 @@ -22,13 +107,6 @@ ![image-20260930093413357](/typora/image-20260930093413357.png) -## Git使用 -### 写在前面 -在软件开发过程中经常会遇到迭代修改问题:即在一个项目中反复修改或优化某一个功能,代码变动很大,然后最后甲方的一句”我觉得还是用最开始那一版吧”经常把我们搞得焦头烂额。而业界一般常用git或svn来进行代码维度的版本管理,我们目前内部在用的是郭大佬搭建的[git平台](http://123.207.52.103:3000/),但是据我调研,大家目前都在把git当作一个云盘来使用而忽略了它的很多高级功能,此文章目的在于带大家了解一些git的基础操作和进阶操作。这里优先讲解我用到过的,其他的待大家完善。 - -### 安装Git(Windows下) -在[飞牛](http://192.168.18.234:5666/)的`/vol1/@team/SW_Group/提效软件`目录下(也就是主界面进去后依次点击**文件管理->团队文件->SW_Group->提效软件**)找到`Git-2.34.1-64-bit.exe`安装包并进行安装,安装选项较多无脑点下一步即可,当然也可以问一下AI那些选项都是什么意思让它给提提建议但一般都无伤大雅。 - ## 关于cmake与CMakePresets.json 大家一定注意到了根文件夹下的CMakePresets.json文件,这个文件就是cmake实现可裁剪模块化配置的关键文件。其中描述了开启哪些编译选项。CMakePresets.json文件的工作原理实际上就是代替命令行cmake中的裁剪配置命令参数,cmake会在每次预构建时读取CMakePresets.json文件内容并在build下生成编译中间文件。因此**每次修改完CMakePresets.json内容后如果需要其生效需要手动删除build文件夹重新触发cmake预编译**。