Bagaimana cara mengelola dependensi?

9

Saya ingin memasukkan ketergantungan seperti Pencatatan . Di halamannya tertulis:

  • Unduh file zip
  • Masukkan folder Logging di "libraries \".

Saya tidak ingin percaya (dengan pola pikir Maven) bahwa ini adalah cara kami mengelola dependensi dalam proyek Arduino. Itu berarti, semua orang yang memeriksa paket saya harus mengulangi langkah-langkah tersebut secara lokal (atau apakah Anda memasukkan "perpustakaan \" dalam kontrol versi) Apa praktik terbaik untuk manajemen ketergantungan?

Markus Malkusch
sumber
Tidak, itu yang dilakukan semua orang.
Kode Gorilla
Perpustakaan adalah perpustakaan itu sendiri. Ini bukan Maven. Ini Arduino. Ini sederhana sehingga orang tanpa pengetahuan tentang mikrokontroler dapat membuat LED berkedip. Jika Anda ingin fasilitas IDE nyata maka gunakan IDE nyata.
Majenko
1
Yah, saya menggunakan hit pertama di Google untuk Arduino IDE, tetapi ini tidak membantu saya dengan ketergantungan. Membuat LED berkedip tidak perlu memerlukan perpustakaan dan saya setuju bahwa semuanya harus sederhana. Itulah alasan mengapa saya meminta manajemen ketergantungan.
Markus Malkusch
Cari C ++ IDE atau G ++ IDE sebagai gantinya. Dan untukcrosscompiling
gilhad

Jawaban:

6

Arduino dimaksudkan untuk menjadi cara yang mudah bagi orang-orang non-teknis dan menyembunyikan sebanyak mungkin dari tampilan sederhana menjadi sederhana.

Untuk proyek sederhana ini bekerja dengan biaya menyalin perpustakaan di sana-sini dan menggunakan "IDE" Arduino. Memanggil program "sketsa" dan memanipulasinya untuk menyembunyikan, bahwa program itu ada di C ++. Dan seterusnya dan seterusnya.

Jika Anda ingin membuat proyek yang lebih rumit, kontrol versi, lingkungan yang baik dan semacamnya, Anda harus meninggalkan "cara Arduino" dan mulai menggunakan alat yang lebih kuat dan rumit.

Saya pribadi menggunakan https://github.com/sudar/Arduino-Makefile https://github.com/ladislas/Bare-Arduino-Project dan memilikinya di repositori GIT.

Dengan cara ini saya dapat membagikan pustaka antar proyek dalam grup, juga tautan ke pustaka di luar karya pohon, serta git submodula, keduanya memungkinkan Anda untuk memiliki pustaka yang diperbarui dari pihak ke-3 yang dapat ditiru untuk semua proyek, juga yang lama.

Saya masih menggunakan banyak Arduino (seperti setup / loop, digitalRead dan semacamnya), tetapi saya juga menggunakan konstruksi "normal" g ++. Nanti saya akan menyimpang lebih ke kode biasa C / g ++ / .. kode mungkin, menggunakan beberapa RTOS atau lebih, tapi sekarang kebutuhan saya belum begitu jauh. (google "arduino rtos" Saat ini saya sedang membaca https://github.com/greiman/NilRTOS-Arduino )

Arduino tidak dimaksudkan sebagai "praktik terbaik". Ini dimaksudkan sebagai "cara cepat dan mudah untuk melakukan sesuatu, ketika Anda tidak tahu apa-apa". Dan itu bekerja, karena siapa pun dan anjingnya dapat mulai dengan Arduino dan jika tertarik, dia bisa melangkah lebih jauh sendiri, atau dia bisa bertahan dengan mudah dan bersenang-senang pula.

gilhad
sumber
1

Jika Anda ingin proyek mandiri, Anda dapat meletakkan dependensi perpustakaan di folder sketsa. Jadi struktur folder sketsa Foo dengan dependensi Logging library akan terlihat seperti ini:

Foo
|_Foo.ino
|_src
  |_Logging
    |_Logging.h
    |_Logging.cpp

Dan di Foo.ino Anda akan memasukkan perpustakaan seperti ini:

#include "src/Logging/Logging.h"

Sayangnya beberapa perpustakaan menggunakan sintaksis yang salah termasuk yang masih berfungsi ketika perpustakaan diinstal di salah satu folder perpustakaan tetapi tidak ketika terletak di folder sketsa. Logging library memang menggunakan sintaks include yang benar tetapi kadang-kadang untuk menempatkan perpustakaan di folder sketsa Anda harus memperbaikinya. Misalnya, katakanlah Anda memiliki perpustakaan bernama Bar dan di Bar.cpp Anda melihat ini:

#include <Bar.h>

Itu tidak akan berhasil karena jika dipasang di folder sketsa Bar.h tidak akan terletak di salah satu jalur sertakan standar sehingga Anda perlu mengedit Bar.cpp dan mengubah sintaksisikan include ke:

#include "Bar.h"

Yang akan menyebabkan folder lokal dicari file yang disertakan.

Kelemahan dari sistem ini adalah bahwa Anda mungkin berakhir dengan beberapa salinan perpustakaan sehingga lebih banyak pekerjaan untuk memperbarui atau memodifikasi setiap salinan. Tentu saja itu juga bisa bermanfaat karena setiap proyek dapat memiliki versi perpustakaan yang berfungsi sendiri yang diketahui yang tidak akan terpengaruh oleh pembaruan apa pun yang Anda buat pada perpustakaan yang sama dengan yang digunakan dalam proyek lain.

Saya biasanya hanya menambahkan instruksi untuk cara menginstal dependensi perpustakaan dengan cara biasa ke dokumentasi untuk suatu proyek. Itu harus dalam kemampuan pengguna Arduino rata-rata. Jika versi perpustakaan tertentu diperlukan maka Anda mendokumentasikannya. Namun, ada beberapa kasus di mana saya ingin menyerahkan proyek mandiri kepada seseorang yang tidak terbiasa dengan penggunaan Arduino IDE dan saat itulah saya menggunakan sistem yang dijelaskan di atas untuk semua perpustakaan pihak ke-3 yang diperlukan.

per1234
sumber