在 Mac 上玩 Arduino,除了可以使用官方的那个简单的 IDE 之外,还可以选择使用 Xcode 来进行开发。

使用 embedXcode 插件即可让 Xcode 摇身一变成为嵌入式开发 IDE,包括了本地编译、上传等全套功能。

embedxcode插件让 Xcode 支持嵌入式开发
embedxcode插件让 Xcode 支持嵌入式开发

不过,在使用标准库的时候就出了问题,比如上图中,我在测试 nRF24L01 这个 SPI 模块,需要用到 SPI.h  这个头文件,一般的写法就是: #include <SPI.h>

然而,这时候在 Xcode 中编译的话,原本正常的代码却遇到了错误:

SPI.h 不能直接被 include
SPI.h 不能直接被 include

当然了,这时候如果去官方 IDE 编译的话,是一切正常的,那么问题就出在了 Xcode 上。

这里我们先手动找到头文件的位置,它位于官方 IDE 的程序文档目录里:

如上所示,目录比较深,官方自己的 IDE 自然没问题,但对于 embedXcode 来说,就有点痛苦了——为了能支持所有的库——它只把路径引用到了 ~/Library/Arduino15/packages/arduino/hardware/avr/1.6.11/libraries ,所以,引用的时候,要这么写: #include <SPI/src/SPI.h>

这样,Xcode 就能够识别了。

当然,这样的话放到官方的 IDE 里就又不行了,目前的话,反正 include 不多,手动改一下吧,如果多的话……用宏来定义吧。

更新,感谢 @rei_vilo ,其实在 embedXcode 中不应该直接引用需要的头文件,而是应该把需要的系统库放在你的编译目录,然后在 makefile 中修改对应的参数即可,比如对应我这个情况,那么就应该在 makefile 中找到

APP_LIBS_LIST = 0  然后将它改成 APP_LIBS_LIST = SPI 

这样一来,IDE 会帮你做剩下的事情了。

延伸阅读:

Libraries APP_LIBS_LIST and USER_LIBS_LIST Variables

Published by R0uter

如非声明,本人所著文章均为原创手打,转载请注明本页面链接和我的名字。

Join the Conversation

1 Comment

电子邮件地址不会被公开。 必填项已用*标注