【问题标题】:What files are linked in an mbed OS 5 project?mbed OS 5 项目中链接了哪些文件?
【发布时间】:2018-03-25 01:25:56
【问题描述】:

我正在编写一个用于 mbed 5 的外部库(一个组件控制器),并计划使其在 mbed 存储库中可用。我想编写测试来确认我的代码是否正常工作,但它们只是常规的普通单元测试,不需要在嵌入式控制器上运行。我将Catch 视为我的框架,它为测试套件提供了main

当我使用mbed CLI 或Eclipse CDT(使用导出的项目)构建我的项目时,包含哪些.cpp 文件,以及哪些.o 文件链接到嵌入的图像?图像是否仅包含通过包含从我的main.cpp 文件中提取的代码,还是编译并链接所有可见的.cpp 文件(可能包括我的测试用例)?如果是后者,是否有一种干净的方法来排除它们不会与内置的 utest 功能发生冲突?

【问题讨论】:

  • 致近距离投票者:到底有什么不清楚的地方?我在问,给定标准 mbed 结构中的一组 .cpp 文件,哪些文件包含在最终输出中。

标签: c++ unit-testing testing mbed catch-unit-test


【解决方案1】:

所有.cpp 文件都包括在内,但也有一些例外。 FEATURE_TARGET_ 文件夹是特殊的,只有当您的板子具有特定功能(或者是特定目标的一部分)时才会添加。我认为TESTS 也有一些特别之处。

您可以查看通过mbed compile -v 输入编译器/链接器的确切命令,或者如果您想要一个整洁的列表,请通过mbed export -i make_gcc_arm 导出到一个makefile,它将列出所有文件。

如果你想了解更多关于内部细节,或者想围绕这些编写脚本,所有逻辑都在 Python 模块中实现,你可以在自己的 Python 脚本中使用它来获取标题/符号/定义/等将被包括在内。例如,请参阅vscode/__init.py__

注意:如果您想排除某个文件或文件夹,可以通过.mbedignore 进行。

【讨论】:

  • 所以我可以,例如,写下我所有的 Catch 测试,将它放在 TESTS-Catch 目录中,然后将其排除在 .mbedignore 中?
  • 是的。就像我在做here 混合桌面代码和嵌入式代码一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-29
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多