怎样在esp-idf编译环境中添加预处器理指令(preprocessor)
-
- Posts: 8
- Joined: Thu Apr 15, 2021 7:37 am
怎样在esp-idf编译环境中添加预处器理指令(preprocessor)
如题,在编译(esp-idf:v3.3.4)时,想加入预处理器指令.
官方文档(v3.3.4)介绍中,使用CPPFLAGS好像能行,
在英文讨论区,发现类似的帖子,按照帖子中的做法尝试后报错。
请问编译时,添加预处理器指令的正确命令(格式?)是什么?
我的输入:
make -j8 CPPFLAGS+='MXEX_CFG_PLATFORMTYPE_STM32' all
ERROR:
xtensa-esp32-elf-gcc.exe: error: MXEX_CFG_PLATFORMTYPE_STM32: No such file or directory</r>
官方文档(v3.3.4)介绍中,使用CPPFLAGS好像能行,
在英文讨论区,发现类似的帖子,按照帖子中的做法尝试后报错。
请问编译时,添加预处理器指令的正确命令(格式?)是什么?
我的输入:
make -j8 CPPFLAGS+='MXEX_CFG_PLATFORMTYPE_STM32' all
ERROR:
xtensa-esp32-elf-gcc.exe: error: MXEX_CFG_PLATFORMTYPE_STM32: No such file or directory</r>
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: 怎样在esp-idf编译环境中添加预处器理指令(preprocessor)
你可以:
然后正常 make
或者直接:
你也可以在 make 后加上 V=1,把 make 的 log 打开,来确认生效了。
Code: Select all
export EXTRA_CPPFLAGS=-DMXEX_CFG_PLATFORMTYPE_STM32
或者直接:
Code: Select all
make EXTRA_CPPFLAGS=-DMXEX_CFG_PLATFORMTYPE_STM32
-
- Posts: 8
- Joined: Thu Apr 15, 2021 7:37 am
Re: 怎样在esp-idf编译环境中添加预处器理指令(preprocessor)
非常感谢你的回答。
我用
make CPPFLAGS+=-DMXEX_CFG_PLATFORMTYPE_STM32
编译成功了。
CPPFLAGS -D宏定义变量 才是正确格式。
一直都是用IDE来编译,对make这些编译相关的指令和参数完全不熟悉。
追问一哈,EXTRA_CPPFLAGS 和 CPPFLAGS的区别是什么喃?
那个英文讨论区说的是EXTRA_CPPFLAGS 不会覆盖当前的设定,
CPPFLAGS+=难道不是继续追加的意思,也就不会覆盖当前设定,难道不一样?
我用
make CPPFLAGS+=-DMXEX_CFG_PLATFORMTYPE_STM32
编译成功了。
CPPFLAGS -D宏定义变量 才是正确格式。
一直都是用IDE来编译,对make这些编译相关的指令和参数完全不熟悉。
追问一哈,EXTRA_CPPFLAGS 和 CPPFLAGS的区别是什么喃?
那个英文讨论区说的是EXTRA_CPPFLAGS 不会覆盖当前的设定,
CPPFLAGS+=难道不是继续追加的意思,也就不会覆盖当前设定,难道不一样?
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: 怎样在esp-idf编译环境中添加预处器理指令(preprocessor)
你在 idf 里搜一下 EXTRA_CPPFLAGS,就大体清楚了,是这样的:
make CPPFLAGS+=-DMXEX_CFG_PLATFORMTYPE_STM32 应该不行吧,会覆盖,建议使用 EXTRA_CPPFLAGS。或者也可以把 CPPFLAGS+=-DMXEX_CFG_PLATFORMTYPE_STM32 加到工程下的 Makefile 里,在 include $(IDF_PATH)/make/project.mk 之前。
Code: Select all
CPPFLAGS := -DESP_PLATFORM -D IDF_VER=\"$(IDF_VER)\" -MMD -MP $(CPPFLAGS) $(EXTRA_CPPFLAGS)
Re: 怎样在esp-idf编译环境中添加预处器理指令(preprocessor)
建议OP还是升级IDF吧!我也曾经一直在用V3.3,用了一年半,但是终于还是升级了。你的项目要是才刚开始,应该用现在的新版本V4.3。否则等你项目做的差不多了,再升级源代码很头疼。不仅源代码需要升级,新的V4.x以及没有make支持了。只有cmake/ninja。什么都得重学一边。不如现在就开始。在cmake环境下我个人觉得对项目源代码的控制更精确。
可以用component_compile_definitions()和component_compile_options()在CMakeLists.txt里面分别植入宏定义和参数。
可以用component_compile_definitions()和component_compile_options()在CMakeLists.txt里面分别植入宏定义和参数。
-
- Posts: 786
- Joined: Wed Nov 14, 2018 8:45 am
Re: 怎样在esp-idf编译环境中添加预处器理指令(preprocessor)
@zliudr 的建议很好。
如果是产品级的开发,建议使用最新的稳定版本,可参看:https://docs.espressif.com/projects/esp ... rt-with。另外,IDF 版本有一个维护周期,关于版本支持策略,可参看:https://github.com/espressif/esp-idf/bl ... _POLICY.md。
v3.3.x 会在 2022.2 月 EOL,v4.3 计划在 5 月初 release,可选择使用。
如果是产品级的开发,建议使用最新的稳定版本,可参看:https://docs.espressif.com/projects/esp ... rt-with。另外,IDF 版本有一个维护周期,关于版本支持策略,可参看:https://github.com/espressif/esp-idf/bl ... _POLICY.md。
v3.3.x 会在 2022.2 月 EOL,v4.3 计划在 5 月初 release,可选择使用。
-
- Posts: 8
- Joined: Thu Apr 15, 2021 7:37 am
Re: 怎样在esp-idf编译环境中添加预处器理指令(preprocessor)
@ESP_Gargamel @zliudr
非常感谢你们的回答和建议。
现在主要做的是M5Core2的移植,最初构建环境时,我都是从GitHub下载的最新版,
在导入我们自己的项目前,在esp-idf下始终无法编译通过(缺少一些文件错误),网上搜索了一哈,
好像是说现在M5Core2的库文件只支持到idf的v3.3版本,checkout v3.3.4之后编译才通过的。
非常感谢你们的回答和建议。
现在主要做的是M5Core2的移植,最初构建环境时,我都是从GitHub下载的最新版,
在导入我们自己的项目前,在esp-idf下始终无法编译通过(缺少一些文件错误),网上搜索了一哈,
好像是说现在M5Core2的库文件只支持到idf的v3.3版本,checkout v3.3.4之后编译才通过的。
Re: 怎样在esp-idf编译环境中添加预处器理指令(preprocessor)
你不提我都快忘了还有个M5。Seeed的Wio terminal就像是抄M5的
我刚看了一下M5Core2的git,好像平均6-8个月没更新了。更新的文件也不是升级IDF的结果。你在git上开个issue,也许他们会至少告诉你他们有没有升级IDF的意向。我看了一下我的Arduino 1.8.13 ESP Arduino 1.0.5。是基于IDF 3.3版本的。也许更新的ESP Arduino 1.0.6会是基于IDF更新的版本?M5好像没有直接IDF支持,只有Arduino, MicroPython。你确定可以把Arduino代码导入IDF?好像可行但不容易。
我刚看了一下M5Core2的git,好像平均6-8个月没更新了。更新的文件也不是升级IDF的结果。你在git上开个issue,也许他们会至少告诉你他们有没有升级IDF的意向。我看了一下我的Arduino 1.8.13 ESP Arduino 1.0.5。是基于IDF 3.3版本的。也许更新的ESP Arduino 1.0.6会是基于IDF更新的版本?M5好像没有直接IDF支持,只有Arduino, MicroPython。你确定可以把Arduino代码导入IDF?好像可行但不容易。
-
- Posts: 8
- Joined: Thu Apr 15, 2021 7:37 am
Re: 怎样在esp-idf编译环境中添加预处器理指令(preprocessor)
@zliudr
我也是先用Arduino IDE(v1.8.13)写了几个M5Core2的demo,熟悉了哈M5的API和开发环境,
然后把我们的项目导入Arduino,但编译错误根本看不懂,问了Arduino Forum,也没有下文,
没有办法只有用esp-idf来尝试,我用的是官方提供的把交叉编译器安装好了的msys2环境。
因为第一次用idf环境,跟到官方文档和网上教程,git了esp-idf v3.3.4,M5Core2的最新, arduino-esp32的最新,
然后就可以了
arduino-esp32:
https://github.com/espressif/arduino-esp32
我也是先用Arduino IDE(v1.8.13)写了几个M5Core2的demo,熟悉了哈M5的API和开发环境,
然后把我们的项目导入Arduino,但编译错误根本看不懂,问了Arduino Forum,也没有下文,
没有办法只有用esp-idf来尝试,我用的是官方提供的把交叉编译器安装好了的msys2环境。
因为第一次用idf环境,跟到官方文档和网上教程,git了esp-idf v3.3.4,M5Core2的最新, arduino-esp32的最新,
然后就可以了
arduino-esp32:
https://github.com/espressif/arduino-esp32
Who is online
Users browsing this forum: No registered users and 28 guests