題:
加載本地庫
Stefan
2015-02-15 03:19:04 UTC
view on stackexchange narkive permalink

我是Arduino / C開發的新手(來自JavaScript / Ruby環境),但是我想知道是否可以在草圖中包含自定義文件夾中的庫?

所以這就是我的情況;

  project.inolibs / MyNewLib / MyNewLib.h MyNewLib.ccp  

現在我的問題是:我如何包括我的自定義庫?我已經對此進行了嘗試;

 #project.ino#include <libs / MyNewLib / MyNewLib.h>#include“ libs / MyNewLib / MyNewLib.h” #include <./libs/ MyNewLib / MyNewLib.h>#include“ ./libs/MyNewLib/MyNewLib.h”  

但是它們都不起作用。誰能告訴我這是否可能?我已經在網上調查了這個問題,但找不到任何令人滿意的答案。希望你們能提供幫助。

乾杯。

更新

我知道您可以將您的庫放入全局庫中文件夾,但我希望它們位於本地項目文件夾中。我想通過git與我的團隊分享。

請再次閱讀我的問題@Tyson。我知道全局庫解決方案,但是我希望它們在我的項目中。
您必須先告訴IDE在哪裡可以找到該庫(請參見前面的鏈接),然後在您的草圖中調用該庫。 `#include `AFAIK,您不能將兩者結合成一個單獨的“ include”來指定路徑/到/庫/,這正是我想問的。
好的,所以我不能包含子文件夾中的文件。
[Windows符號鏈接](http://www.howtogeek.com/howto/16226/complete-guide-to-symbolic-links-symlinks-on-windows-or-linux/)
是的,我想符號鏈接是唯一的選擇。或自定義的Makefile,但我不確定。謝謝!
在Windows上,您可以使用Visual Micro和Visual Studio。支持本地Arduino庫。有關帶有本地庫的示例草圖,請單擊“文件”>“新建”>“項目”>“ Arduino庫”
您對Arduino工具與實際的,成熟的或專業的軟件實踐根本不兼容這一事實感到困惑。他們可能還會不停地抱怨該.git目錄,儘管它實際上不會破壞構建。
七 答案:
Sean Walton
2017-01-11 08:21:13 UTC
view on stackexchange narkive permalink

好的,這是它的工作方式,我檢查了一下以確保。

確保可以使用硬路徑,但是每個程序員討厭都使用硬路徑。它們根本不是可移植的,並且可以將您的程序鎖定在適當的位置。您可以使用軟鏈接或硬鏈接鏈接到項目中的文件(在“ ln”上查找手冊頁)。但是,...談論醜陋!那麼問題是如何“正確”地做到這一點?關鍵是學習C / C ++編譯器使用哪些參數以及在哪種路徑下運行。

您會發現結論根本不直觀。切入正題:相對路徑不能正常工作。現在,為什麼?

但是首先,讓我解釋一下為什麼有人要放置程序文件外部項目目錄。程序員喜歡一次編寫程序類,結構,方法,函數,宏等。一旦程序員鞏固了程序片段,他/她便希望將文件放在公共樹中並繼續前進。此後的每個程序都可以使用該私有庫。另外,通過將文件放在一個中央位置,您將不會有多個副本和版本。一個私有庫,用於許多私有程序。

從1.6.13開始(Teensy還不支持1.8。*),相對庫包括從開始的目錄,而不是您的目錄。似乎ano-to-C過濾器(請記住Arduino對目標進行了“轉換”,然後調用C / C ++編譯器)從安裝Arduino樹的位置開始。就我而言,我安裝在“〜/ bin / arduino”中。 Teensy的家位於“ ./hardware/teensy”。庫的完整主目錄是“〜/ bin / arduino / hardware / teensy / avr / libraries”,您將在其中找到所有支持程序樹。

在源文件中,“#include” test.hpp“語句正確地從當前目錄中選擇文件。但是,如果您使用“ #include“ ../test.hpp”,則包含路徑不會 not 在您的項目目錄中開始。而是從“ ./libraries”開始!因此,結果路徑為:

#include“ ../test.hpp” == > ./arduino/hardware/teensy/avr/libraries/test.hpp

總而言之,沒有在附近目錄中製作自己的工具樹的簡便方法。唯一的課程是將您的工作提交到Arduino庫中,並且也要了解這些規則。

russ_hensel
2015-03-06 21:36:22 UTC
view on stackexchange narkive permalink

一段時間後,我又回到使用arduino了,對類似的問題感到困惑,並且對來自不同站點的不同信息以及針對不同版本的ide感到困惑。您在目錄中有一個草圖,然後關閉Ide,可以將.h,.cpp ...文件拖放到該目錄中,並且ide在重新啟動後將使用草圖打開它們。

通過在文件名上使用簡單的引號將它們包括在內,沒有路徑,沒有尖括號。

我確信這只是完整答案的一部分,但這已經使我開始

Visual Micro
2015-03-07 07:13:48 UTC
view on stackexchange narkive permalink

Visual Studio的Arduino插件支持本地庫,您可以在此處

找到該插件
Lorenzo Addazi
2015-03-25 07:04:01 UTC
view on stackexchange narkive permalink

據我所知,您可以使用絕對路徑從自定義位置包含庫。

由於從代碼可移植性的角度來看絕對路徑可能很無聊,因此您可以定義一些宏以從給定的相對路徑獲取絕對路徑。這樣,從設備傳遞到另一個設備時,您只需要修復“項目根目錄”路徑。

定義項目的根文件夾:

  #define PROJECT_ROOT C:\ path \ to \ your \ project \ folder  

定義一個相對於絕對的宏'transformation':

  #define TO_STRING(s )#s #define ABSOLUTE_PATH(root,relative_path)TO_STRING(root \ relative_path)#define RELATIVE_PATH(library)ABSOLUTE_PATH(PROJECT_ROOT,library) 

使用相對路徑包括文件:

  #include RELATIVE_PATH(some \ file \ relative \ path.h)#include RELATIVE_PATH(another \ file \ relative \ path.h) 

我希望它將會有用。

Mikael Patel
2016-02-17 16:34:29 UTC
view on stackexchange narkive permalink

我最近測試了此本地庫結構。它適用於:

  #include“ libs / MyNewLib / MyNewLib.h”  

Arduino IDE 1.6.7構建預處理甚至可以使用庫的源代碼。

乾杯!

在1.6.7中必須是新的
似乎確實較新的版本更靈活,您可以在相對路徑中包含庫。但是,當包含的文件還包含相對於其位置的其他文件時,我仍然遇到問題。
嗯,我剛才寫的包含問題與路徑無關。看來Arduino IDE無法很好地處理* .ipp文件。看到此[arduino論壇線程](http://forum.arduino.cc/index.php?topic=400477.msg2755702#msg2755702)
在Windows 1.8.1中對我不起作用。
Matt Ball
2016-02-16 22:43:25 UTC
view on stackexchange narkive permalink

我發現最簡單的方法是將庫存儲在本地草圖目錄中,並在[HOME] / Arduino / libraries目錄中創建符號鏈接。然後,您可以在草圖/項目中輕鬆將它們檢入Git,而Arduino仍然很高興,因為可以在全局文件夾中訪問這些庫。

甚至可以創建一個安裝腳本來自動創建這些鏈接並將其檢入也是Git。

Eric
2016-11-05 20:28:46 UTC
view on stackexchange narkive permalink

另一個非常糟糕的解決方法-創建一個名為 libraries.cpp 的文件,其中包含:

  //強制鏈接程序構建庫#include“ libraries / LIB1 / src / FILE1.cpp“ #include” libraries / LIB1 / src / FILE2.cpp“ #include” libraries / LIB2 / src / FILE1.cpp“  

當然,這僅如果庫本身不包含任何包含項,則可以使用...



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...