Saya baru mengenal pengembangan Arduino / C (berasal dari lingkungan JavaScript / Ruby), tetapi saya bertanya-tanya apakah mungkin untuk memasukkan perpustakaan dari folder khusus dalam sketsa?
Jadi inilah situasi saya;
project.ino
libs/
MyNewLib/
MyNewLib.h
MyNewLib.ccp
Sekarang pertanyaan saya adalah: bagaimana saya bisa memasukkan perpustakaan khusus saya? Saya sudah mencoba beberapa variasi dalam hal ini;
# project.ino
#include <libs/MyNewLib/MyNewLib.h>
#include "libs/MyNewLib/MyNewLib.h"
#include <./libs/MyNewLib/MyNewLib.h>
#include "./libs/MyNewLib/MyNewLib.h"
Tapi tidak satu pun dari mereka yang berfungsi. Adakah yang bisa memberi tahu saya jika ini mungkin? Saya telah melihat pertanyaan ini di web, tetapi saya tidak dapat menemukan jawaban yang memuaskan. Semoga kalian bisa membantu.
Bersulang.
MEMPERBARUI
Saya sadar Anda dapat meletakkan perpustakaan Anda di folder perpustakaan global Anda, tetapi saya ingin mereka di folder proyek lokal saya. Saya ingin membagikannya melalui git dengan tim saya.
sumber
include
menentukan path / ke / library / yang merupakan apa yang saya kira Anda tanyakan.Jawaban:
Oke, ini cara kerjanya, dan saya memeriksanya untuk memastikan.
Tentu Anda bisa menggunakan jalur keras, tetapi setiap programmer benci menggunakan jalur keras. Mereka tidak portabel sama sekali, dan mereka mengunci program Anda di tempat. Anda menggunakan tautan lunak atau keras ke file dalam proyek (lihat halaman manual di "ln"). Tapi, ... bicarakan jelek! Jadi pertanyaannya adalah bagaimana melakukannya dengan "benar"? Kuncinya adalah belajar dengan parameter apa dan di jalur apa C / C ++ berjalan.
Anda akan menemukan kesimpulannya TIDAK intuitif sama sekali. Memotong untuk mengejar: jalur relatif tidak berfungsi dengan benar. Sekarang kenapa?
Tetapi pertama-tama, izinkan saya menjelaskan mengapa ada orang yang ingin menempatkan file program di luar direktori proyek. Pemrogram suka menulis kelas program, struct, metode, fungsi, makro, dll., Sekali. Segera setelah programmer memadatkan fragmen program, ia ingin meletakkan file-file tersebut di pohon yang sama dan melanjutkan. Setiap program sesudahnya dapat menggunakan perpustakaan pribadi itu. Selain itu, dengan memiliki file di tempat utama, Anda tidak akan memiliki banyak salinan dan versi masing-masing. Satu perpustakaan pribadi untuk banyak program pribadi.
Pada 1.6.13 (Teensy belum mendukung 1.8. *), Relatif termasuk mulai dari perpustakaan , bukan direktori Anda. Tampaknya filter ano-ke-C (ingat bahwa Arduino melakukan "konversi" ke target kemudian memanggil kompiler C / C ++) mulai di mana Anda menginstal pohon Arduino Anda. Dalam kasus saya, saya menginstal di "~ / bin / arduino". Rumah Teensy adalah "./hardware/teensy". Seluruh path home untuk pustaka adalah "~ / bin / arduino / hardware / teensy / avr / libraries" di mana Anda akan menemukan semua pohon program dukungan.
Dalam file sumber, pernyataan '#include "test.hpp"' dengan benar memilih file dari direktori Anda saat ini. NAMUN, jika Anda menggunakan '#include "../test.hpp",' jalur sertakan tidak dimulai di direktori proyek Anda. Sebaliknya itu dimulai di "./libraries"! Jadi jalur yang dihasilkan adalah:
#include "../test.hpp" ==> ./arduino/hardware/teensy/avr/libraries/test.hpp
Kesimpulannya tidak ada cara bersih untuk membuat pohon alat Anda sendiri di direktori terdekat. Satu-satunya kursus adalah untuk melakukan pekerjaan Anda di perpustakaan Arduino dan mengetahui aturan-aturan itu juga.
sumber
Saya baru saja kembali menggunakan arduino setelah beberapa waktu dan agak bingung dengan masalah yang sama dan bingung oleh info yang berbeda dari situs yang berbeda dan untuk versi ide yang berbeda.
Apa yang saya temukan adalah bahwa jika Anda memiliki sketsa di direktori, maka matikan Ide Anda dapat menjatuhkan file .h, .cpp ... dalam direktori dan ide, ketika dimulai kembali, akan membukanya dengan sketsa.
Sertakan mereka dengan menggunakan kutipan sederhana pada nama file, tidak ada jalur, tidak ada kurung sudut.
Saya yakin ini hanya sebagian dari jawaban lengkapnya, tetapi saya sudah mulai.
sumber
Sejauh yang saya tahu, Anda dapat memasukkan perpustakaan Anda dari lokasi khusus dengan menggunakan jalur absolut mereka.
Karena jalur absolut bisa membosankan dari sudut pandang kode-portabilitas, Anda bisa mendefinisikan beberapa makro untuk mendapatkan jalur absolut dari jalur relatif yang diberikan. Dengan cara ini, Anda hanya perlu memperbaiki jalur 'proyek root' ketika berpindah dari satu perangkat ke perangkat lainnya.
Tentukan folder root proyek Anda:
Tentukan 'transformasi' makro relatif ke absolut:
Sertakan file Anda menggunakan jalur relatif:
Semoga bermanfaat.
sumber
Plugin Arduino untuk Visual Studio mendukung perpustakaan lokal Anda dapat menemukan plugin di sini
sumber
Saya baru-baru ini menguji struktur perpustakaan lokal ini. Ini bekerja dengan:
Arduino IDE 1.6.7 build pre-processing bahkan akan mengambil kode sumber untuk pustaka.
Bersulang!
sumber
Cara paling sederhana yang saya temukan untuk melakukan ini adalah menyimpan perpustakaan di direktori sketsa lokal Anda dan membuat tautan simbolis di direktori [HOME] / Arduino / libraries. Kemudian Anda dapat memeriksanya di Git dengan mudah dengan sketsa / proyek Anda dan Arduino masih senang karena perpustakaan dapat diakses di folder global.
Mungkin bahkan membuat skrip instal yang membuat tautan ini secara otomatis dan memeriksanya ke Git juga.
sumber
Lain perbaikan yang sangat buruk - buat file bernama
libraries.cpp
, yang berisi:Tentu saja, ini hanya berfungsi jika perpustakaan itu sendiri tidak mengandung ...
sumber