2013-02-20 316 views
7

我目前正在編寫一個Arduino庫,並且我想將文件包含在庫文件夾的一個子目錄中。更具體地說,我希望能夠從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中定義。

回答

2

不要使用

#include <MyLib.h> 
#include <Extra/SomeNiceFunctions.h> 

改用

#include <arduinolib.h> 
#include "MyLib.h" 
#include "Extra/SomeNiceFunctions.h" 

使用尖括號,編譯器會在包括-文件的標準文件夾。你需要你的自定義文件在你的工作目錄中。

+0

所有文件都在我的Arduino庫文件夾中,而不在草圖文件夾中,但是您是正確的! – giannoug 2013-02-20 14:27:53

+1

然後請標記爲答案,如果它的工作。 – 2013-02-20 14:31:56

+0

不幸的是,它沒有。 – giannoug 2013-02-20 14:36:52

-1

借款從this stack overflow question

包含路徑包括草圖的目錄,目標目錄 (/硬件/芯//)和AVR包括目錄 (/硬件/工具/ AVR/AVR /包括/)以及包含主草圖文件包含的頭文件 的任何庫目錄 (在/ hardware/libraries /中)。

嘗試

// in myProject.ino 
#include <arduinolib.h> 
#include "MyLib.h" 

// in Mylib.h 
#include "./extra/SomeNiceFunctions.h" 
+1

'SomeNiceFunctions.h'不會自動包含,因爲它位於庫文件夾內的子文件夾中。 – giannoug 2013-02-22 16:13:11

+0

在最後一句中,它指定標題需要包含在主草圖文件中。您是否嘗試將標題添加到主草圖?你有沒有嘗試在MyLib.h中包含SomeNiceFunctions? – 2015-04-27 14:12:44

0

關於包括在Arduino的/能源公司的子文件夾Arduion/Energia公司庫: 看您的主要包括文件和上浮(如arduino.h/energia.h。)在目錄結構中使用.. \或向下,直到您到達您想要包含的所需h文件。 例如。 我: ..hardware \核心\ cc3200 \ energia.h ..hardware \庫\ SPI \ spi.h中

爲了在一個.cpp使用的文件的spi.h中的功能,我不得不添加: #include <energia.h> 其次 #include <..\..\libraries\SPI\SPI.h

0

我有一些與此問題。我只是想要一個簡單的解決方案,而在CPP中編寫庫是正確的方法 - 我畫了一張素描 - 說出robo.ino文件並將其添加到一個簡單的庫包含 - 以便庫中只有一個文件位於文件夾下稱爲Robot - robo.h

├── sketchesfolder 
├── libraries 
│ ├── robot 
│ │ ├── robot.h 
├── robotsketch 
│ ├── Move.ino 

Now in the Move。伊諾 - 我只是包括文件

#include <robo.h> 

你需要添加一些簡單的功能的唯一事情是一個原型聲明 - 或者確保您的功能是由第一次使用排序。

因此,例如 - 把底部設置()和類似的功能:如在robo.h文件的頭部原型定義

void halt(int wait); 

它可以讓你分享草圖作爲通用代碼而不將其轉換爲CPP庫。但是你當然應該這麼做。

相關問題