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.