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 动态变量(尤其是当前源文件的基础)

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1167100/ccs-dynamic-variables-in-particular-the-base-of-the-current-source-file

我一直在尝试找到由 CCS 维护的各种动态变量的定义。 我找到的最好的文档是有关构建可移植工程的 TI 文档(https://software-dl.ti.com/ccs/esd/documents/ccs_portable-projects.html)、但这只是指 CCS 中的系统变量、它没有提供有关各种动态变量所提供内容的大量详细信息。

我遇到的具体问题是访问正在处理的当前源(或对象)文件的基名或根名。 该编译正在生成一组用于插入静态库的对象、并且我希望能够在处理每个源文件时捕获一些汇编详细信息、理想情况下是在所处理源文件的根名称下。 例如、如果其处理 test.c 生成 test.o、我希望能够捕获"测试"以生成类似于 test.s 的内容 输出库 在 BuildArtifactFileBaseName 下可用、但这仅为我提供目标库的库、而不是用于生成目标库的组件。 我可以在 make 级别(basename)看到我要执行的操作、但一直在尝试避免接触生成的 make 树。

有趣  的是、CCS 中生成的默认编译命令的形式为"${command}${flags}${output_flag}${output}${inputs}"、其中没有一个甚至在"系统变量"中列出(尽管"命令"在编译窗格中定义为"${cG_tool_gcc}"-c、可解析回系统变量)。

如果不能做到这一点、这些动态变量是否在任何地方都有记录、无论是作为 CCS 还是 Eclipse 的一部分。

谢谢- Andrew

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="265677" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1167100/ccs-dynamic-variables-in-particular-the-base-of-the-current-source-file "]正在处理的当前源(或对象)文件的根名称。

    我认为 CCS (Eclipse)不知道在时间上处理哪个文件。 只有外部编译器(例如 cl2000.exe)知道在任何特定时间处理哪个文件、因此我认为 CCS 变量不太可能用于您的目的。

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

    但是,外部编译器不知道应该处理哪些文件.... 需要以某种方式告诉它。  

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

    当然、通过生成器的{inputs}参数。

    我只是想回答您关于"正在处理的当前源(或对象)文件的基本名称或根名称"的请求。

    您可以尝试解析控制台日志文件中以"生成文件:"开头的行

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="265677" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1167100/ccs-dynamic-variables-in-particular-the-base-of-the-current-source-file "]该编译会生成一组对象以插入静态库,并且我希望能够在处理每个源文件时捕获一些汇编详细信息,最好是在所处理源文件的根名称下。 例如、如果其处理 test.c 用于生成 test.o、我希望能够捕获"测试"以生成类似于 test.s[/quot]的内容

    您是否只是想在编译后为源文件捕获中间生成的汇编文件?

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

    谢谢大家。 我必须进行一些复习、以了解这是如何工作的。  

    作为 makefile 生成的一部分、CCS 生成 subdir_sources。mk、其中包含需要编译 并插入库(用于静态库工程)的所有源。 然后、makefile 文件可以使用该选项来执行实际处理。 因此、您说得非常正确、虽然 CCS 可能知道需要构建什么、但 在构建每个源代码时会从特定的处理中断开连接。

    但是、CCS 使用的扩展符号引用(形式为${symbol})与 make 使用的变量扩展(形式为$(variable))不同。 虽然 CCS 可能会吞没 符号的符号扩展(例如${xxx})、但很高兴传递 make 变量扩展请求(例如$(xxx))、以便进行分类。

    因此、通过在 CCS 中的其他编译器标志中添加形式为"-Wa、-ahln=$(* F).s、-fverbose-asm"的内容、$(* F)将完整地传递、以使其变为、并用替换它 这正是我要做的事情。