Arduino CLI环境下多Sketch项目如何引入本地库文件?
Arduino CLI 多Sketch项目头文件引用解决方案
针对你的项目结构,要在SketchOne/SketchOne.ino中引入lib/lib_1/some.h,可以用以下两种方法解决:
方法1:使用相对路径直接引用
因为SketchOne.ino位于项目根的子目录SketchOne下,需要向上回溯一级到项目根,再定位到lib目录,所以使用相对路径:
#include "../lib/lib_1/some.h"
这种方式不需要依赖Arduino的库识别机制,直接通过文件系统路径定位头文件,适合快速解决问题。
方法2:按Arduino库规范组织本地库,让CLI自动识别
Arduino CLI会自动识别项目根目录下lib文件夹中的合法Arduino库,只需给lib_1添加一个简单的库属性文件即可:
- 在
lib/lib_1目录下创建library.properties文件,内容示例:
name=lib_1 version=1.0.0 author=你的名字 category=Other architectures=*
- 完成后,在
SketchOne.ino中直接引用头文件:
#include <some.h> // 或者如果需要明确指定库目录,也可以用: #include <lib_1/some.h>
此时CLI会自动将lib/lib_1加入头文件搜索路径,编译时就能正确找到some.h。
为什么之前的写法无效
#include "lib/lib_1/some.h":路径基于SketchOne目录,实际查找的是SketchOne/lib/lib_1/some.h,该路径不存在。#include <lib/lib_1/some.h>:尖括号用于查找系统库或已识别的库路径,CLI不会自动将项目根lib下的子路径加入搜索列表,因此无法找到。#include "lib_1/some.h"/#include <lib_1/some.h>:lib_1未被识别为合法Arduino库,未加入头文件搜索路径,因此无法定位。
内容的提问来源于stack exchange,提问作者Farish Irfan
相关产品推荐
相关产品推荐

