[英]Include a file within a folder in an Arduino library
我目前正在編寫一個Arduino庫,我想將文件包含在庫文件夾中的子目錄中。 更具體地說,我希望文件可以從Arduino草圖中訪問。
這是我的目錄結構:
MyLib/MyLib.cpp
MyLib/MyLib.h
MyLib/Extra/SomeNiceFunctions.cpp
MyLib/Extra/SomeNiceFunctions.h
這就是我試圖包含文件的方式:
#include <MyLib.h>
#include <Extra/SomeNiceFunctions.h>
顯然這是錯誤的,因為IDE包含庫文件夾的方式。 我還應該嘗試什么? 我可以將Extra文件夾拆分為另一個“Library”(另一個文件夾),但這不是我想要的。
編輯:這是錯誤我得到undefined reference to 'font8x8'
。 這在Extra/SomeNiceFunctions.h
定義。
不要用
#include <MyLib.h>
#include <Extra/SomeNiceFunctions.h>
改為使用
#include <arduinolib.h>
#include "MyLib.h"
#include "Extra/SomeNiceFunctions.h"
使用尖括號,編譯器在標准文件夾中查找包含文件。 您希望自定義文件位於工作目錄中。
關於包含Arduino / Energia子文件夾中的Arduion / Energia庫:查看主要包含文件的位置(例如arduino.h / energia.h),然后使用.. \\或向下進入目錄結構,直到進入想要包含的h文件。 例如。 我有:..hardware \\ cores \\ cc3200 \\ energia.h ..hardware \\ libraries \\ SPI \\ SPI.h
為了在.hpp文件中使用SPI.h函數,我必須添加: #include <energia.h>
后跟#include <..\\..\\libraries\\SPI\\SPI.h
我有一個問題。 我只是想要一個簡單的解決方案,而在CPP中編寫庫是正確的方法 - 我拿了一個草圖 - 比如說robo.ino文件並將其添加到一個簡單的庫中 - 這樣文件夾下的庫中只有一個文件叫機器人 - robo.h
├── sketchesfolder
├── libraries
│ ├── robot
│ │ ├── robot.h
├── robotsketch
│ ├── Move.ino
現在在Move.ino中 - 我只是包含該文件
#include <robo.h>
您需要為簡單函數添加的唯一內容是原型聲明 - 或者確保首次使用時對您的函數進行排序。
例如 - 將Setup()放在底部,功能如下:
void halt(int wait);
作為robo.h文件頭部的原型定義
它允許您將草圖作為公共代碼共享,而無需將其轉換為CPP庫。 但你當然應該這樣做。
借用這個堆棧溢出問題 ,
include路徑包括sketch的目錄,目標目錄(/ hardware / core //)和avr include目錄(/ hardware / tools / avr / avr / include /),以及任何庫目錄(在/ hardware / libraries中) /)包含主草圖文件包含的頭文件。
嘗試
// in myProject.ino
#include <arduinolib.h>
#include "MyLib.h"
// in Mylib.h
#include "./extra/SomeNiceFunctions.h"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.