MicroPython构建外部C模块

问题描述

因此,在正式的micropython存储库中发生更改并由于较早的esp-idf版本不兼容之后,我无法再构建外部C模块。我遵循了此官方文档中的确切步骤: https://docs.micropython.org/en/latest/develop/cmodules.html

我正在/ ports / unix文件夹中运行此命令:

USER_C_MODULES=../../../modules CFLAGS_EXTRA=-DMODULE_EXAMPLE_ENABLED=1 all

我得到的错误是:

Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
Including User C Module from ../../../modules/example
make: *** No rule to make target 'example/python/micropython/my_project/modules/example/example.c',needed by 'build-standard/genhdr/qstr.i.last'.  Stop.

有什么想法吗?

解决方法

您需要 2 个 micropyhon.cmake 文件。 1 应该在您的根 modules 目录中,并作为您想要包含在编译中的所有模块的主包含。第二个应该在您的特定模块目录中。如果要包含多个模块,则每个模块都需要一个 micropython.cmake 文件。这些用于包含所有要编译的源代码。

拥有正确的 cmake 文件后,您可以通过将目录更改为相应的 micropython/ports/DesiredPort 子目录并使用命令行来编译:

make USER_C_MODULES=/path/to/your/modules/micropython.cmake all

您可以在以下链接中找到示例。

https://github.com/micropython/micropython/tree/master/examples/usercmodule