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:Eclipse CDT中的链式依赖性顺序

Guru**** 2539500 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/569937/ccs-ccstudio-chained-dependency-order-in-eclipse-cdt

部件号:CCStudio
“Thread:SysBIOS”中讨论的其它部件

工具/软件:Code Composer Studio

我尝试在Code Composer中为嵌入式固件项目使用“项目参考”功能。 我使用的是Code Composer Studio 7.0 ,它实际上只是带有CDT 9.0 和JRE 8的Eclipse 4.6 的包装程序。 但是,从我所能了解到的,我尝试使用的功能是特定于CDT的。 嵌入式固件分为多个部分,其中包含几个库,一个RTOS平台和"核心"固件。

目的是在触发核心固件项目的构建时自动生成项目的依赖关系并按正确的顺序进行更新。 但是,由于一些图书馆建立在其他图书馆之上,我看到了一些奇怪的行为,我不太理解。 相关图表如下所示。

enter image description here

如您所见,最多有四个级别的依赖关系。 我看到的问题是,虽然我已按“属性”->“C/C++常规”->“路径和符号”->“引用”的顺序将引用排序为固件项目的[平台,PAL,HAL,功能],但构建顺序似乎不符合该规范。 排序似乎是半随机的。 清理后,PAL有时会先构建,而其他时间则会构建功能。 如果由于无法访问依赖关系而发生这种情况,则整个版本最终会失败。 我是否缺少一个附加步骤来按正确的顺序生成依赖关系,或者Eclipse出于某种原因不支持嵌套依赖关系?

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

    Keith

    只要为每个项目正确设置了依赖关系,我就希望这一点能够正常工作,(即) PAL依赖于RTOS平台,HAL依赖于PAL和RTOS平台,等等,直到固件项目。

    Keith Elliott 说:
    我看到的问题是,虽然我已按“属性->C/C++常规->路径和符号->引用”的顺序将引用排序为固件项目的[平台,PAL,HAL,功能],但构建顺序似乎不符合该规范。[/QUOT]

    此处的一个建议是使用 CCS项目相关性( 我们对其拥有更多控制权)来代替项目参考(从标准CDT继承)来指定相关性。 您能否尝试一下,并告诉我们是否有帮助?

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

    感谢您的建议。 我可以看出,CCS项目相关性链接到CDT项目参考。 在一个点中添加/删除引用会对另一个点应用相同的更改,因此CCS项目相关性中已存在依赖关系。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能否提供一个出现"顺序错误"的构建的示例? 如果您可以在其中一个构建过程中保存CCS生成控制台中的输出并将其发送给我们,这可能会很有帮助。 您是否还可以附加有关如何为每个项目设置依赖关系的屏幕截图?

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

    我要随附一个zip文件,其中包含您请求的屏幕截图和生成输出。  此外,zip文件还包含生成的makefile,因为我假定这最终会受到“项目参考”功能的影响。  我将给您保存zip文件的密码。

    生成输出是通过对eclipsec.exe的命令行调用触发的。  它实际上只是一个Nant包装程序,它将所有项目导入到单个工作空间,然后在“固件”项目上启动构建。  每个项目都有预构建和后构建步骤,分别调用Nant预构建和后构建目标。  这些目标是非常基本的文件复制,因此我假定可以忽略它们在生成输出中的存在。  实际上,postbuild将文件(.lib和.h文件)发布到全局可见的目录中,并且prebuild从它所依赖的项目中从同一全局目录以及多个自动生成的files.e2e.ti.com/.../BuildOutput.zip中提取文件(.lib和.h)

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

    Keith

    感谢您提供这些文件。 我们将查看它们是否足以判断正在发生的情况,或者我们是否需要可重现的测试案例。

    我有几个问题要澄清几件事:

    1)虽然控制台输出确实显示了项目构建的顺序,但我很想知道项目efn0.174万 (无法打开源文件“PAL/timer.h”)中的错误是否与构建顺序相关。 该头文件的包含路径是否正确传递到编译器? 此故障是否与依赖关系构建订单相关?  

    2)由于您使用的是命令行版本,我很想知道从CCS GUI生成时是否出现相同的行为。 您是否尝试过,或者您能否尝试一下,让我们知道是否观察到同样的情况?

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

    乐于助人! 如果您还需要我的帮助,请告诉我。

    回答您的问题:

    1)因此efn0.174万项目是HAL项目,它依赖于PAL (am571x)和平台(SysBIOS)项目。 PAL (am571x),作为其构建后步骤的一部分,将其公共头文件复制到我在上一篇文章中提到的全局目录。 这包括timers.h头文件。 然后,HAL (efn0.174万)将这些include文件复制到其项目包含路径中列出的本地目录。 例如,"timers.h"被复制到"{global_DIR}/PAL/timers.h",作为PAL构建后的步骤。 "{GLOBAL_DIR}/PAL/TIMER.h"随后将复制到"{LOCAL_DIR}/PAL/TIMER.h",作为HAL预构建步骤的一部分。 因此,基本上该文件应该存在,但这不是因为PAL (am571x)项目不是在HAL (efn0.174万)项目之前构建的。

    2)我可以确认CCS GUI在尝试构建“固件”项目时也不按顺序构建。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Keith

    如果没有完整的测试项目来重现这一问题,我就无法在调查中取得很好的进展。 不过,我已要求CCS工程师来研究一下,但可能要几天之后,我们才会有一些事情要报告。 我们将在您获得更多信息后立即发布消息。  

    感谢您的耐心等待。

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

    Keith

    我对延迟答复表示歉意。 一位工程师对此进行了调查,并确认CCS中某处存在导致此问题发生的错误。 很遗憾,我们目前没有解决方法,因为它仍在调查中。 错误的跟踪编号是CCSEIDE-3064,供您参考。 您可以使用我签名中的SDOWP链接跟踪其状态(从现在起可能需要几个小时才能显示在该页面上)。

    感谢您的耐心等待,并提请我们注意此问题!

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