打印
[STM32F4]

STM32CubeIDE在绝对路径上链接固件时使用相对路径

[复制链接]
28|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lvluoo|  楼主 | 2025-6-8 22:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在创建项目时,我更喜欢链接到通用库文件,而不是将它们复制到我的项目中,但是IDE管理这些相对链接的方式使得很难通过版本控制在开发人员之间共享项目。在创建项目时,可以在“代码生成器选项>在工具链项目配置文件中添加必要的库文件作为引用”中找到此配置选项。

有两种情况:

默认、用户相关fw路径:“~/STM32 Cube/Repository/",例如“/home/miles/STM32 Cube/Repository/”
自定义的、与用户无关的fw路径:“/usr/share/stm_repo”
作为参考,这些路径可在“窗口>首选项> STM32 Cube >固件更新程序>存储库设置”中配置。

默认路径方案:

这些路径在.project中显示如下:

        <link>
            <name>Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal.c</name>   
            <type>1</type>   
            <locationURI>$%7BPARENT-5-PROJECT_LOC%7D/STM32Cube/Repository/STM32Cube_FW_F4_V1.25.1/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c</locationURI>   
        </link>
在这种情况下,使用相对路径是可以理解的,因为不希望任何开发人员的名称位于其主目录的绝对路径中。这意味着如果另一个开发人员克隆项目存储库,他们的工作区必须与他们的队友处于相对于主目录的相同深度。

自定义、独立于用户的路径方案:

这些路径在.project中显示如下:

        <link>
            <name>Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal.c</name>   
            <type>1</type>   
            <locationURI>$%7BPARENT-7-PROJECT_LOC%7D/usr/share/stm_repo/STM32Cube_FW_F4_V1.25.1/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c</locationURI>   
        </link>
在这种情况下,包含PARENT-n-PROJECT_PROJECT前缀会中断任何开发人员的编译,这些开发人员会克隆到比根目录更小或相等深度的目录。如果开发人员在嵌套的最低层执行代码生成,会破坏团队成员的编译。

现在的解决方法是让所有开发人员在.project上运行一个后处理脚本来删除父前缀:

find . -name .project | xargs sed -i 's|$%7BPARENT-[[:digit:]]\+-PROJECT_LOC%7D/usr/share|/usr/share|g'
要获得这样的路径:

        <link>
            <name>Drivers/STM32F4xx_HAL_Driver/stm32f4xx_hal.c</name>   
            <type>1</type>   
            <locationURI>/usr/share/stm_repo/STM32Cube_FW_F4_V1.25.1/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c</locationURI>   
        </link>

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

22

主题

48

帖子

0

粉丝