Tamam, işte böyle çalışıyor ve emin olmak için kontrol ettim.
Elbette zor yollar kullanabilirsiniz, ancak her programcı sabit yollar kullanmaktan nefret eder . Hiç taşınabilir değiller ve programınızı yerinde kilitliyorlar. Projedeki dosyalara yumuşak veya sabit bağlantılar kullanırsınız ("ln" deki man sayfalarına bakın). Ama, ... çirkin hakkında konuşun! Yani soru "doğru" nasıl yapılır? Anahtar, hangi parametrelerle ve C / C ++ derleyicisinin hangi yolda çalıştığını öğrenmektir.
Sonuç hiç sezgisel DEĞİL bulacaksınız. Chase kesim: göreli yollar yok düzgün çalışması. Şimdi, neden?
Ama önce, neden herkesin program dosyalarını proje dizininin dışına yerleştirmek istediğini açıklayayım . Programcılar bir kez program sınıfları, yapılar, yöntemler, fonksiyonlar, makrolar vb. Programcı program parçasını sağlamlaştırdığı anda, dosyaları ortak bir ağaca koymak ve devam etmek ister. Bundan sonraki her program bu özel kütüphaneyi kullanabilir. Ayrıca, dosyaları merkezi bir yerde tutarak, her birinin birden fazla kopyasına ve sürümüne sahip olmayacaksınız. Birçok özel program için tek bir özel kütüphane.
1.6.13'ten itibaren (Teensy henüz 1.8. * 'İ desteklememektedir), göreli dizininizi değil kütüphaneden başlamayı içerir . Ano-C filtresinin (Arduino'nun hedefe "dönüşüm" yaptığını ve ardından C / C ++ derleyicisini çağırdığını unutmayın) Arduino ağacınızı kurduğunuz yerden başlar. Benim durumumda, "~ / bin / arduino" içine kurdum. Teensy'nin evi "./hardware/teensy" dir. Kütüphaneler için tüm ana yol "~ / bin / arduino / donanım / teensy / avr / kütüphaneler" dir ve burada tüm destek programı ağaçlarını bulacaksınız.
Bir kaynak dosyada '#include "test.hpp"' ifadesi dosyayı geçerli dizininizden doğru bir şekilde seçer. Kullanmak eğer ANCAK '#include '../test.hpp',' yok yolu dahil değil proje dizininde başlar. Bunun yerine "./labraries" ile başlıyor! Sonuçta ortaya çıkan yol:
#include "../test.hpp" ==> ./arduino/hardware/teensy/avr/libraries/test.hpp
Sonuç olarak, yakındaki bir dizinde kendi araç ağacınızı oluşturmanın temiz bir yolu yoktur. Tek ders, Arduino kütüphanesinde çalışmanızı sağlamak ve bu kuralların da farkında olmaktır.