platformio随意添加文件夹和文件JSON文件和INI文件配置

· 更新于

PlatformIO

问题原因:

我想在pio里面随便放置文件夹,让他参与编译。添加的文件是C文件,pio工程是CPP文件。

下面是使用NXP的LVGL图形库生成工具GUI-GUIDER1.3.0生成的文件夹

我要添加的文件结构

├─.pio (no show,because too long)
├─.vscode
├─include
├─lib
│  └─BLTGUI
│      ├─custom
│      └─generated
│          ├─guider_customer_fonts
│          ├─guider_fonts
│          └─images
└─src

困难点一:

不知道放哪里,因为不懂pio的时候,放哪里都报错。

困难点二:

混合使用C和CPP,会报错undefined reference to,是LD连接错误

main.cpp:26: undefined reference to `setup_ui'
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\esp32dev\firmware.elf] Error 1

JSON解决方案:(已验证OK)

使用library.json文件:官网说明,让自己的新文件夹成为一个库文件

下面是完整的一个json

`{     "name": "BLTGUI",     "keywords": "bltgui",     "description": "bltgui des",     "version": "1.0",     "authors": {       "name": "lb"     },     "licence": "MIT",     "frameworks": "arduino",     "platforms": "espressif32",     "build" : {       "unflags": "-std=gnu++11",       "flags": [          "-std=c99",         "-I custom",         "-I generated",         "-I generated/guider_customer_fonts",         "-I generated/guider_fonts",         "-I generated/images"       ],       "srcFilter": [         "+<*.c>",         "+<custom/*.c>",         "+<generated/*.c>",         "+<generated/guider_customer_fonts/*.c>",         "+<generated/guider_fonts/*.c>",         "+<generated/images/*.c>"       ]     }   }`

最重要的说明点:

  • srcFilter里面要用“+<xxx/xxx>”的格式。不能直接用“xxx”。官网位置

  • 多文件夹不能直接放在lib下,要放在lib/xxname/下,json也是放在这个下面和多文件夹并列。

INI解决方案:(待验证)

关于文件src路径添加到编译的设置问题:build_src_filter

这个build_src_filter是ini里面的src路径设置,和json里面的设置,语法相同。

  • +<PATH>包括模板
  • -<PATH>排除模板
  • PATH是相对于src_dir的
  • PATH可以使用GLOB全局通配符
  • src_dir在ini里不设置默认就是src文件夹。可以指定其他文件夹。

例如:+<*> -<.git/> -<.svn/>