Lâu lắm rồi tôi mới tìm kiếm một câu trả lời hay cho câu hỏi này.
Thông thường, bất kỳ dự án Arduino nào nhưng đơn giản nhất sẽ bao gồm:
- Tệp mã nguồn chính
MyProject.ino
- Các thư viện dành riêng cho dự án (
MyProjectLibrary1.h
,MyProjectLibrary1.cpp
...) - Thư viện của bên thứ ba (thường là nguồn mở miễn phí, được thêm thủ công vào thư mục thư viện Arduino)
- Sơ đồ, sơ đồ PCB
- Tài liệu
- ...
Tất cả điều này làm cho khó có thể giữ toàn bộ mã và tài liệu của một dự án trong Quản lý mã nguồn (ví dụ: trên Subversion, Git hoặc GitHub).
Quản lý kiểm soát nguồn dự án của bạn có nghĩa là quản lý phiên bản của tất cả các tệp được sử dụng bởi dự án bao gồm các thư viện của bên thứ 3.
Bây giờ cho một dự án duy nhất, tôi cần xác định cấu trúc thư mục:
- Bao gồm tất cả các tệp dự án như được mô tả ở trên
- Tôi hoàn toàn có thể cam kết với một công cụ quản lý mã nguồn (bao gồm cả phụ thuộc của bên thứ 3)
- Tôi có thể kiểm tra bất cứ nơi nào trên ổ cứng của mình và xây dựng dự án từ đó (có phải là một vị trí duy nhất theo quy định của Arduino IDE)
- Tôi có thể nén vào một kho lưu trữ độc lập mà tôi có thể gửi cho một người bạn để anh ta xây dựng dễ dàng nhất có thể (không cần tải thêm thủ công)
Điều tôi thấy đặc biệt khó khăn với các dự án Arduino là việc quản lý các phụ thuộc thư viện bên ngoài. Các nhà phát triển dự án Java có kho lưu trữ maven cho điều đó và điều đó giúp ích rất nhiều trong việc quản lý tất cả các thiết bị bên ngoài. Nhưng chúng tôi không có một hệ thống tương đương cho các thư viện Arduino.
Tôi sẽ quan tâm để biết làm thế nào các nhà sản xuất dự án Arduino khác đối phó với các khía cạnh này trong các dự án riêng của họ.
Cũng lưu ý rằng tôi sẵn sàng thay đổi quy trình phát triển của mình, bao gồm cả IDE của tôi (hiện tại tôi sử dụng Eclipse với plugin Arduino và sau đó tôi đảm bảo các dự án của mình cũng có thể hoạt động trực tiếp với Arduino IDE).