Jestem nowy w rozwoju Arduino / C (pochodzący ze środowiska JavaScript / Ruby), ale zastanawiałem się, czy można dołączyć bibliotekę z niestandardowego folderu do szkicu?
To jest moja sytuacja;
project.ino
libs/
MyNewLib/
MyNewLib.h
MyNewLib.ccp
Teraz moje pytanie brzmi: jak mogę dołączyć własną bibliotekę? Wypróbowałem kilka odmian tego;
# project.ino
#include <libs/MyNewLib/MyNewLib.h>
#include "libs/MyNewLib/MyNewLib.h"
#include <./libs/MyNewLib/MyNewLib.h>
#include "./libs/MyNewLib/MyNewLib.h"
Ale żaden z nich nie działa. Czy ktoś może mi powiedzieć, czy jest to możliwe? Sprawdziłem to pytanie w Internecie, ale nie mogę znaleźć satysfakcjonującej odpowiedzi. Mam nadzieję, że możecie pomóc.
Twoje zdrowie.
AKTUALIZACJA
Wiem, że możesz umieścić swoje biblioteki w folderze bibliotek globalnych, ale chcę je w moim lokalnym folderze projektu. Chcę się nimi dzielić z moim zespołem przez git.
library
sketch
system-design
Stefan
źródło
źródło
include
określając ścieżkę / do / library /, o co chyba pytasz.Odpowiedzi:
Okej, oto jak to działa i sprawdziłem to, aby się upewnić.
Jasne, że możesz używać twardych ścieżek, ale każdy programista nienawidzi używania twardych ścieżek. W ogóle nie są przenośne i blokują twój program. Używasz miękkich lub twardych linków do plików w projekcie (poszukaj stron podręcznika na „ln”). Ale ... mów o brzydocie! Pytanie brzmi więc, jak to zrobić „poprawnie”? Kluczem jest nauczenie się, z jakimi parametrami i jaką ścieżką działa kompilator C / C ++.
Przekonasz się, że wniosek wcale NIE jest intuicyjny. Przechodzenie do pościgu: ścieżki względne nie działają poprawnie. Teraz dlaczego?
Ale najpierw pozwól mi wyjaśnić, dlaczego ktoś chciałby umieszczać pliki programów poza katalogiem projektu. Programiści lubią pisać klasy programu, struktury, metody, funkcje, makra itp. Gdy tylko programista zestali fragment programu, chce umieścić pliki we wspólnym drzewie i przejść dalej. Każdy program może później korzystać z tej prywatnej biblioteki. Ponadto, mając pliki w centralnym miejscu, nie będziesz mieć wielu kopii i wersji każdego z nich. Jedna prywatna biblioteka dla wielu prywatnych programów.
Począwszy od 1.6.13 (Teensy nie obsługuje jeszcze 1.8. *), Krewny obejmuje start z biblioteki , a nie z katalogu. Wygląda na to, że filtr ano-do-C (pamiętaj, że Arduino dokonuje „konwersji” do celu, a następnie wywołuje kompilator C / C ++) rozpoczyna się w miejscu, w którym zainstalowałeś swoje drzewo Arduino. W moim przypadku zainstalowałem w „~ / bin / arduino”. Dom Teensy to „./hardware/teensy”. Cała główna ścieżka do bibliotek to „~ / bin / arduino / hardware / teensy / avr / libraries”, gdzie znajdziesz wszystkie drzewa programów wsparcia.
W pliku źródłowym instrukcja „#include” test.hpp ”poprawnie wybiera plik z bieżącego katalogu. JEDNAK, jeśli użyjesz „#include” ../test.hpp ”, ścieżka dołączania nie rozpocznie się w katalogu projektu. Zamiast tego zaczyna się w „./libraries”! Wynikowa ścieżka to:
#include "../test.hpp" ==> ./arduino/hardware/teensy/avr/libraries/test.hpp
Podsumowując, nie ma czystego sposobu na stworzenie własnego drzewa narzędzi w pobliskim katalogu. Jedynym kursem jest zaangażowanie się w bibliotekę Arduino i przestrzeganie tych zasad.
źródło
Właśnie wróciłem do korzystania z arduino po pewnym czasie i jestem nieco oszołomiony podobnymi problemami i mylone różnymi informacjami z różnych stron i dla różnych wersji ide.
Znalazłem, że jeśli masz szkic w katalogu, a następnie zamknij Ide, możesz upuścić pliki .h, .cpp ... w katalogu, a ide, po ponownym uruchomieniu, otworzy je ze szkicem.
Dołącz je, używając prostych cudzysłowów w nazwach plików, bez ścieżki, bez nawiasów kątowych.
Jestem pewien, że to tylko część pełnej odpowiedzi, ale to mnie zaczęło.
źródło
O ile mi wiadomo, możesz dołączyć swoje biblioteki z niestandardowej lokalizacji, używając ich ścieżki bezwzględnej.
Ponieważ ścieżki bezwzględne mogą być nudne z punktu widzenia przenośności kodu, można zdefiniować niektóre makra, aby uzyskać ścieżkę bezwzględną z danego względnego. W ten sposób musisz po prostu naprawić ścieżkę „katalogu głównego projektu” podczas przechodzenia z urządzenia na inne.
Zdefiniuj folder główny swojego projektu:
Zdefiniuj „transformację” makro względem wartości bezwzględnej:
Dołącz swoje pliki przy użyciu ścieżki względnej:
Mam nadzieję, że się przyda.
źródło
Wtyczka Arduino dla programu Visual Studio obsługuje biblioteki lokalne, które można znaleźć tutaj
źródło
Niedawno przetestowałem tę lokalną strukturę biblioteki. Działa z:
Wstępne przetwarzanie kompilacji Arduino IDE 1.6.7 spowoduje nawet pobranie kodu źródłowego biblioteki.
Twoje zdrowie!
źródło
Najprostszym sposobem, jaki to zrobiłem, jest przechowywanie bibliotek w lokalnym katalogu szkiców i utworzenie dowiązania symbolicznego w katalogu [HOME] / Arduino / libraries. Następnie możesz je łatwo zarejestrować w Git za pomocą szkicu / projektu, a Arduino jest nadal szczęśliwy, ponieważ biblioteki są dostępne w folderze globalnym.
Może nawet stwórz skrypt instalacyjny, który automatycznie tworzy te linki i sprawdź to również w Git.
źródło
Kolejna naprawdę zła poprawka - utwórz plik o nazwie
libraries.cpp
, który zawiera:Oczywiście działa to tylko wtedy, gdy sama biblioteka nie zawiera żadnych ...
źródło