This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430FR5969:有关如何扩展 makefile 功能的教程

Guru**** 2451240 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1487694/msp430fr5969-tutorial-on-how-to-extend-the-makefile-functionality

器件型号:MSP430FR5969

工具与软件:

您好!

我已经看到了与 makefile 调制相关的文章、以获得 git 标签版本并将其用作环境变量(参考: e2e.ti.com/.../ccs-msp430fr5969-storing-a-symbol-value-before-building)。 我一直在尝试设置预编译步骤、但我目前无法产生结果。 是否可以获得有关如何扩展 make 文件以获取 git 标记版本的教程?

此致、

David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我将该主题移到 CCS 主题。 希望他们能帮助您找到答案。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    太好了、这件事有什么更新吗?

    David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 David:

    [quote userid="553972" url="~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1487694/msp430fr5969-tutorial-on-how-to-extend-the-makefile-functionality 是否可以获得一个关于如何扩展 make 文件以获得 git 标记版本的教程?

    我不知道有任何此类教程。 这不是我们在 CCS 中本身支持的功能。 也许社区中的某个人会分享一个解决方案。

    Ki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ki、

    我一直在使用能够执行任务的 bash 脚本、但无法正确定义 v git_tag 符号。 我可以获得 git 标记版本并将其复制到 txt 中,但我无法定义所需的 syumbol,也许你可以帮助我?

    我仍然在学习如何通过.bat 文件调整编译器选项、但我认为它没有问题、直到编译器标记设置和符号定义。

    此致、

    David

    @echo off
    setlocal enabledelayedexpansion
    
    REM Get Git version information
    for /f "tokens=*" %%i in ('git describe --long --dirty --tags 2^>nul') do set GIT_DESCRIBE=%%i
    
    REM Check if git describe command worked
    if "%GIT_DESCRIBE%"=="" (
        echo WARNING: Git command failed or no tags found. Using default values.
        set GIT_DESCRIBE=v0.0.0-0-dev-dirty
    )
    
    REM Split the git describe output into components
    set "version=%GIT_DESCRIBE:-= %"
    
    REM Extract components
    for /f "tokens=1,2,3,4" %%a in ("%version%") do (
        set VERSION_TAG=%%a
        set COMMITS_PAST=%%b
        set COMMIT=%%c
        set DIRTY=%%d
    )
    
    REM Initialize build info variables
    set "BUILD_INFO_COMMITS="
    set "BUILD_INFO_DIRTY="
    
    REM Add commits info if not zero
    if NOT "%COMMITS_PAST%"=="0" (
        set "BUILD_INFO_COMMITS=.%COMMITS_PAST%"
    )
    
    REM Add dirty marker if present
    if NOT "%DIRTY%"=="" (
        set "BUILD_INFO_DIRTY=+"
    )
    
    REM Combine build info
    set "BUILD_INFO=%COMMIT%%BUILD_INFO_COMMITS%%BUILD_INFO_DIRTY%"
    
    REM Get build environment information
    for /f "tokens=*" %%d in ('date /T') do set DATE=%%d
    for /f "tokens=*" %%t in ('time /T') do set TIME=%%t
    set "BUILD_DATE=%DATE%, %TIME%"
    for /f "tokens=*" %%u in ('echo %username%') do set USERNAME=%%u
    for /f "tokens=*" %%h in ('hostname') do set HOSTNAME=%%h
    set "BUILD_MACHINE=%USERNAME%@%HOSTNAME%"
    
    REM Display build information
    echo Build Time: %BUILD_DATE%
    echo Build Version: %VERSION_TAG%
    echo Build Info: %BUILD_INFO%
    
    REM Create compiler flags
    set "GEN_OPTS__FLAG=--define=VERSION_TAG=\"%VERSION_TAG%\" --define=VERSION_BUILD_INFO=\"%BUILD_INFO%\" --define=VERSION_BUILD_MACHINE=\"%BUILD_MACHINE%\" --define=VERSION_BUILD_DATE=\"%BUILD_DATE%\""
    
    REM Create a variables file that can be included in other batch files
    echo @echo off > version_vars.bat
    echo set "VERSION_TAG=%VERSION_TAG%" >> version_vars.bat
    echo set "BUILD_INFO=%BUILD_INFO%" >> version_vars.bat
    echo set "BUILD_MACHINE=%BUILD_MACHINE%" >> version_vars.bat
    echo set "BUILD_DATE=%BUILD_DATE%" >> version_vars.bat
    echo set "GEN_OPTS__FLAG=%GEN_OPTS__FLAG%" >> version_vars.bat
    
    REM Create a variables file for makefile inclusion
    echo VERSION_TAG=%VERSION_TAG% > version_vars.mk
    echo BUILD_INFO=%BUILD_INFO% >> version_vars.mk
    echo BUILD_MACHINE=%BUILD_MACHINE% >> version_vars.mk
    echo BUILD_DATE=%BUILD_DATE% >> version_vars.mk
    echo GEN_OPTS__FLAG=%GEN_OPTS__FLAG% >> version_vars.mk
    
    echo.
    echo Variables have been written to:
    echo - version_vars.bat (for batch files)
    echo - version_vars.mk (for makefiles)
    echo.
    echo To use in the current command prompt session, run:
    echo call version_vars.bat
    
    endlocal & (
        REM Export variables outside of the local scope
        set "VERSION_TAG=%VERSION_TAG%"
        set "BUILD_INFO=%BUILD_INFO%"
        set "BUILD_MACHINE=%BUILD_MACHINE%"
        set "BUILD_DATE=%BUILD_DATE%"
        set "GEN_OPTS__FLAG=%GEN_OPTS__FLAG%"
    )

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我一直在使用 bash 脚本

    使用 bash、您必须显式地将内容导出到子进程。 如果你不这样做,那么使将永远看不到它们。 您可以一次性完成所有功能。

    在我的.bashrc 中找到隐藏:

    导出 MSP430_GCC_INCLUDE_DIR=/usr/ti/gcc/include

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    David、您好!

    感谢您的答复、您能进一步解释一下我将通过该命令完成哪些工作吗?

    此外,正确我如果我错了,子进程应该是 CCS 运行的 bnash 脚本,因此,我应该把符号导出到父进程 isntead? 我正在使用预编译步骤、我认为这就像一个单独的 make 命令、并且我 sohuld 使预编译步骤和实际编译过程之间的互连在顶部向编译器发送符号。

    此致、

    David

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不知道 CCS 在做什么、但子进程几乎不可能更改父进程的环境变量。 您可以对其进行筛选、正如最近在 Hackaday 上发表的一篇文章中所展示的那样。 虽然这主要是为了防止 bash 启动子进程来运行脚本。