簡體   English   中英

在Arduino庫的文件夾中包含文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM