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.

[参考译文] CCS/CCStudio:Code Composer Studio 生成文件作为预编译步骤

Guru**** 2522770 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/924061/ccs-ccstudio-code-composer-studio-generate-files-as-pre-build-step

器件型号:CCStudio

工具/软件:Code Composer Studio

我尝试运行批处理脚本以生成 C/C++文件、并在 CCS 中遇到问题。 我可以成功执行.bat 文件并生成源文件、但我正在运行的问题是 CCS 无法识别生成的文件、直到构建失败(因为它在启动构建后未更新文件)。

我尝试了几项没有结果的事情:

  1. 在预编译步骤中调用.bat 文件。
    1. 我也尝试使用此步骤禁用并行编译。

  2. 完全使用执行.bat 文件的自定义编译器创建单独的工程、并将该工程添加为 CCS 工程中的依赖项(通过 Properties > CCS Build > Dependencies)。
  3. 与#1相同、但设置  C/C++ General > Paths and Symbols > References  to the generator project。
  4. 按照 https://embeddedartistry.com/blog/2019/02/18/using-custom-build-steps-with-eclipse-auto-generated-makefiles/中的示例进行操作。

我没有完全能够让#4工作、以表明它不起作用。 如果我希望...\path\to \script.bat 在编译之前执行、我的 makefile.init 文件应该包含什么内容?

我觉得我缺少一些明显的东西、因为我认为这是项目的常见用例。 我还应该做其他事情吗?

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

    Erich、

    一旦您选择"Build Project"、就会立即创建 CCS 自动生成的 makefile、并且由于此时生成的批处理文件不在工程文件夹中、因此它们不包含在 makefile/build 中。

    您可以使用方法#2来生成源文件、但它不能只是一个从属项目。 这些工程必须依次编译、并且应设置自定义编译器工程以在主工程文件夹中生成源文件(或在两个编译之间复制源文件)。

    对于#4、使用 makefile.init、我认为您应该能够从此处调用批处理文件。 本页面包含有关 makefile.init 的一些信息、这些信息可能有助于:
    https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_project-management.html#makefiles

    最后、您还可以允许 CCS 自动生成一次 makefile、然后禁用为未来编译自动生成 makefile、并向 makefile 添加自定义预编译步骤、如以下文章 https://e2e.ti.com/support/tools/ccs/f/81/p/733570/2712093#2712093中所述 
    这有点难、但应该完成工作。

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

    好的、我终于获得了#4来实际生成和清理生成的文件、但我尝试过的所有其他方法都出现了同样的问题... 其中 CCS 在初始化构建后不刷新项目文件。 因此,构建将首次失败,这是不可接受的,特别是在尝试在自动化 CI 服务器上构建时。

    对于感兴趣的人、我的 makefile.init 包含以下内容:

    All:parameter-database-generate
    clean:parameter-database-clean
    
    parameter-database-generate:
    @echo generating parameter Database
    @cmd $(shell pwd)/../../Parameter_Database/generate.bat
    
    parameter-database-clean:
    @echo Cleaning parameter Database
    @cmd $(shell pwd)/../../Parameter_Database/clean.bat 

    syscfg 组件如何处理此问题? 因为我想做的是(我认为)与它完全一样。 是否可以在 syscfg 生成过程中添加挂钩?

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

    啊! 我开始工作了! 我所做的是#2、但没有单独的项目(尽管我确定我可以在单独的项目中完成)。

    https://stackoverflow.com/questions/6819707/how-can-i-compile-auto-generated-c-files-in-pre-build#:~:text=Go%20to%20the%20project%20properties,files%20whenever%20it%20is%20run。

    我为使其正常工作所采取的步骤:

    1. 在"工程属性"中、单击 "显示高级设置"。
    2. 建设者>新建...
    3. 选择  Program (程序)
    4. 在 Main (主)选项卡 中、在 Location (位置)字段中输入${PROJECT_loc}/../path/to/script.bat。
    5. 在"刷新"选项卡中、选中 "完成后刷新资源"。 并选择 包含所选资源的项目。
    6. 在 Build Options 选项卡中、确保 选中"clear"和"manual build"(手动编译期间)(默认)。
    7. 单击 Apply  (应用)和  OK (确定)
    8. 选择刚刚创建的生成器、然后单击 向上按钮将其设置为位于 CDT 生成器和扫描仪配置生成器上方。