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/TM4C129CNCPDT:CCSv8.2和"从构建&quot 中排除;不再起作用

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/734583/ccs-tm4c129cncpdt-ccsv8-2-and-exclude-from-build-no-longer-works

器件型号:TM4C129CNCPDT

工具/软件:Code Composer Studio

我刚刚更新到 CCS 8.2、似乎不再尊重资源配置设置。  我们有一个基于构建配置的项目、我们在其中使用不同的 main.cc 文件。  在忽略工程根目录中的 main.cc 文件的配置中、我仍然会在编译日志中看到 CCS 尝试编译该文件、最终会双定义许多项:

生成文件:"../main.cc"
调用:ARM 编译器 

这完全为我们打破了一切。  它在 macOS 和 Linux 上都发生。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    进一步探究、由8.2中的 automake 生成的 subdir_rules.mk 使用`./%.cc $(GEN_opts)|$(GEN_FILES)`来构建所有 cc 文件。 在8.1中、同一文件显式为每个文件生成一行。 使用`%`通配符似乎是错误的、因为它完全打破了这种"从构建中排除"行为。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Kaveh Vaghefi "]在忽略项目根目录中的 main.cc 文件的配置中,我仍然看到 CCS 尝试在构建日志中构建它,最终会双重定义许多项目

    您能否向我们发送一个测试项目来演示这一点、因为我目前无法重现此问题。

    此外、对于一些背景信息、您是将使用旧版 CCS 创建的工程导入到 CCS 8.2中、还是使用 CCS 8.2打开旧版工作区?

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

    是的、我将升级到8.2并尝试构建现有项目。 我建议创建具有以下层次结构的项目:

    /main.cc
    /foo/main.cc

    然后从构建中排除/main.cc 并尝试构建它。 检查输出、您将看到它试图构建错误的 main.cc。  我无法向您发送我的完整项目、并且尝试创建测试项目来重现它是可行的、我现在没有时间了。  在8.1版中不会发生这种情况、只有8.2版。

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

    我曾尝试过、但很遗憾、我无法在使用上述结构创建的简单项目上重现此问题。 我创建了一个具有两个编译配置(Debug 和 Release)的工程- Debug 在根目录中包含 main.cc 并排除 foo/main.cc、而 Release 则排除 root main.cc 并包含 foo/main.cc。 当我构建它时、会生成预期的源文件、并排除预期的源文件。

    调试构建的输出:

    Release 构建的输出:

    必须有一些特定的项目设置或配置来触发您的环境中的问题、因此如果您可以向我们发送可重现的测试案例、这将非常有帮助。

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

    是否可以通过 WebEx 向您展示发生了什么情况?

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

    [引用用户="Kaveh Vaghefi"]是否可以通过 WebEx 向您展示发生了什么情况?

    当然、我们可以这么做。

    我仍然需要一个可重现的测试案例来提交错误报告进行分析、但 WebEx 可能会帮助您找到问题。  

    让我与您离线联系、了解 WebEx 详细信息。

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

    此问题在 TI 仍然不可重现。 我们正在尝试离线确定是否有其他方法可以重新创建它。 我们现在将关闭此主题、因为没有立即执行的操作/后续报告、但会在更新发生时返回并发布更新。

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

    感谢您通过私人对话提供项目文件。 在这些文件的帮助下、我们能够重新创建并确定根本原因。

    总之、问题是当在工程中明确设置--obj_directory 标志时、CCS 会错误地构建从该编译配置中排除的源文件。

    CCS 8.1不会出现此问题。 由于 CCS 中生成的 makefile 规则最近发生了变化、它在8.2中公开。
    当编译器->高级选项->目录说明符->模式设置为“自动”时,8.2中也不会出现此问题。

    此错误的跟踪 ID 是 CCSIDE-3439。 我们将尽最大努力为 CCS 8.3修复此问题、否则它肯定会出现在 CCS 9.0中。

    感谢您的耐心等待、并帮助您跟踪此情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Kaveh、

    我刚刚获得了一个更新、该修复程序不会将其添加到 CCS 8.3中。 它将位于 CCS 9.0中、预计将在2019年第1季度结束。
    很抱歉给您带来不便、感谢您的耐心等待。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的更新!