সহজ উত্স নিয়ন্ত্রণের জন্য কীভাবে আমার আরডুইনো প্রকল্পগুলির কাঠামোটি সংগঠিত করবেন?


75

দীর্ঘদিন হয়েছে আমি এই প্রশ্নের ভাল উত্তর খুঁজছি।

সাধারণত, যে কোনও আরডুইনো প্রকল্প তবে সহজতমটির মধ্যে অন্তর্ভুক্ত থাকবে:

  • মূল উত্স কোড ফাইল MyProject.ino
  • প্রকল্পের জন্য নির্দিষ্ট গ্রন্থাগারগুলি ( MyProjectLibrary1.h, MyProjectLibrary1.cpp...)
  • তৃতীয় পক্ষের লাইব্রেরি (সাধারণত বিনামূল্যে মুক্ত উত্স, আরডুইনো লাইব্রেরি ডিরেক্টরিতে ম্যানুয়ালি যোগ করা হয়)
  • স্কিম্যাটিক্স, পিসিবি ডায়াগ্রাম
  • নথিপত্র
  • ...

এই সমস্ত উত্স কোড পরিচালনা (যেমন সাবভারশন, গিট বা গিটহাবের উপরে) এর অধীনে একটি প্রকল্পের পুরো কোড এবং ডকটি রাখা কঠিন করে তোলে।

আপনার প্রকল্পের উত্স নিয়ন্ত্রণ পরিচালনার অর্থ তৃতীয় পক্ষের লাইব্রেরি সহ প্রকল্পের দ্বারা ব্যবহৃত সমস্ত ফাইলের সংস্করণ পরিচালনা করা।

এখন একটি একক প্রকল্পের জন্য, আমাকে একটি ডিরেক্টরি কাঠামো সংজ্ঞায়িত করতে হবে যা:

  • উপরে বর্ণিত সমস্ত প্রকল্প ফাইল অন্তর্ভুক্ত
  • আমি সম্পূর্ণরূপে উত্স কোড পরিচালনা সরঞ্জামে প্রতিশ্রুতিবদ্ধ করতে পারি (তৃতীয় পক্ষের নির্ভরতা সহ)
  • আমি আমার হার্ড ড্রাইভের যে কোনও জায়গায় চেকআউট করতে পারি এবং সেখান থেকে প্রকল্পটি তৈরি করতে পারি (এটি আরডুইনো আইডিই দ্বারা আরোপিত কোনও একক অবস্থান হতে হবে)
  • আমি একটি স্ব-অন্তর্ভুক্ত সংরক্ষণাগারটিতে জিপ করতে পারি যা আমি যতটা সম্ভব সহজেই তৈরি করার জন্য কোনও বন্ধুকে তার কাছে প্রেরণ করতে পারি (কোনও অতিরিক্ত ম্যানুয়াল ডাউনলোড নেই)

আরডুইনো প্রকল্পগুলির সাথে আমি বিশেষত যেটি জটিল মনে করি তা হ'ল বাহ্যিক গ্রন্থাগারগুলির নির্ভরতাগুলির পরিচালনা। জাভা প্রকল্পগুলির বিকাশকারীদের জন্য মভেন সংগ্রহশালা রয়েছে এবং এটি সমস্ত বাহ্যিক ডিপগুলি পরিচালনা করতে অনেক সহায়তা করে। তবে আরডুইনো লাইব্রেরির জন্য আমাদের কাছে সমতুল্য ব্যবস্থা নেই।

অন্যান্য আরডিনো প্রকল্প নির্মাতারা কীভাবে তাদের নিজস্ব প্রকল্পগুলিতে এই দিকগুলি নিয়ে কাজ করে তা জানতে আগ্রহী হব।

এছাড়াও নোট করুন যে আমি আমার আইডিই সহ আমার বিকাশ প্রক্রিয়াটি পরিবর্তনের জন্য উন্মুক্ত (বর্তমানে আমি বেশিরভাগ সময় আরডুইনো প্লাগইন সহ এক্লিপ্স ব্যবহার করি এবং তারপরে আমি নিশ্চিত করি যে আমার প্রকল্পগুলিও আরডুইনো আইডিইয়ের সাথে সরাসরি কাজ করতে পারে)।


আমিও এর সাথে লড়াই করে যাচ্ছি। আমার দুটি প্রকল্প রয়েছে যার একটি বাহ্যিক গ্রন্থাগারের বিভিন্ন সংস্করণ প্রয়োজন এবং বর্তমানে সেগুলি সংস্করণ নিয়ন্ত্রণের বাইরে।
সাইবারবিবন্স

1
আরও গবেষণার জন্য দয়া করে নোট করুন যে সেগুলি প্যাকেজ ম্যানেজার । জাভাস্ক্রিপ্ট নোড.জেএস / এনএমপি এবং বোরো পেয়েছে, পিএইচপি পিয়ার এবং সুরকার ইত্যাদি পেয়েছে
কায়সার

উত্তর:


30

আমার একটি আরডুইনো প্রকল্প সংগঠিত করার পদ্ধতিটি বেশ সহজ, আমার সমস্ত প্রকল্প গিট রিপোজিটরিগুলি যাতে কমপক্ষে নিম্নলিখিত থাকে:

আমার বেশিরভাগ ব্যবহারের মামলার বিরুদ্ধে কাজ করার জন্য আমি আমার প্রিয় সম্পাদক এবং একটি মেকফিল ব্যবহার করে আমার অগ্রাধিকার পেয়েছি (এবং আমি শীঘ্রই ভাগ করতে চলেছি এমন একটিটিরও উন্নতি করেছি)।

গ্রন্থাগারগুলির জন্য, আমি তাদের নিজস্ব সংগ্রহস্থল হিসাবে রাখতে পছন্দ করি এবং তাদের প্রকল্পে অন্তর্ভুক্ত করতে গিট সাবমডিউল ব্যবহার করি। সম্প্রদায় দ্বারা রচিত অনেকগুলি গ্রন্থাগার গিট সংগ্রহস্থল হিসাবে ভাগ করা হয়, এটি একটি ভাল জেনেরিক সমাধান। তারপরে, মেকফিলের মধ্যে, আমি কেবলমাত্র লাইব্রেরিগুলির পথটি যুক্ত করতে চাই যা আমি LOCALLIBS ভেরিয়েবলের অন্তর্ভুক্ত করতে চাই ।

যদিও কিছু প্রকল্পের জন্য, লাইব্রেরিগুলি প্রকল্পের জন্য তৈরি একটি হার্ডওয়্যার অ্যাবস্ট্রাকশন স্তর লাইব্রেরিতে আবদ্ধ করা বোধগম্য হয়, তবে আমি এই জাতীয় পথ ব্যবহার করতে পছন্দ করি:

  • project
    • project.ino
    • Makefile
    • project_hal_lib
      • library1
      • library2
      • library3
      • ...

যদিও, আরডুইনো 1.5.xa সহ গ্রন্থাগারগুলি নির্দিষ্ট করার নতুন উপায় দেওয়া হয়েছে, এটি পাইথন এবং পাইপুন এবং ভার্চুয়ালেনভের সাথে পাইথনগুলিতে যেমন ইতিমধ্যে করেছি ঠিক তেমনভাবে আরডুইনো প্রকল্পগুলি তৈরি ও নির্মাণের একটি উপায় প্রস্তাব করবে, যেমন আপনি আপনার প্রয়োজন লাইব্রেরির সেটটি সংজ্ঞায়িত করেন এবং তারা ডাউনলোড করা।


আমি অনুরূপ উত্তর নিয়ে কাজ করছিলাম। তুমি আমাকে এটা দ্বারা মেরেছ!
asheeshr

+1 ধন্যবাদ! এই উপায়টি বেশ আকর্ষণীয় দেখায়। আমাকে এই সপ্তাহে চেষ্টা করে দেখতে হবে (যদিও প্রথমে মেকফিল স্টাফ সেটআপ করতে হবে তা পরীক্ষা করে দেখুন)।
jfpoil ব্যাখ্যা

@ উত্তরআশআর যদি আপনার উত্তরটি একই রকম হয় তবে এর অর্থ এটি এখনও কিছু পার্থক্য আছে, তাই না? আমি এই সম্পর্কে জানতে আগ্রহী!
jfpoil ব্যাখ্যা

আমার মেকফিলের পরবর্তী সংস্করণটি নিয়ে আসার মূল পরিবর্তনগুলি হ'ল হয় flashপ্রোগ্রামার uploadব্যবহার বা বুটলোডার ব্যবহারের ক্ষমতা । পাশাপাশি ফার্মওয়্যারের সাথে বুটলোডার মার্জ করার ব্যবস্থা রয়েছে। আমি একটি ইন-মেকফিল ফিউজ সেটারও লিখেছি।
zmo

@Zmo অনুগ্রহ প্রাপ্য, যদিও আপনার মেকফিল সমাধানটি আমার পরিস্থিতিতে কাজ করতে পারে না (উইন্ডোজ ব্যবহার করে তবে আমি সেই বিষয়টি নির্দিষ্ট করে নি)। তবে আমি নিশ্চিত যে বিদ্যমান যে কোনও মেকফিল সমাধান উপলব্ধ তা ব্যবহার করার উপায়। আমি একবার আমার জন্য এক থা জাল খুঁজে পেয়েছি আমি আমার উত্তর এখানে পোস্ট করব।
jfpoil ব্যাখ্যা

23

এটি করার সহজ উপায় হ'ল লাইব্রেরির শিরোনাম এবং কোড ফাইলগুলি আপনার উত্স ডিরেক্টরিতে অনুলিপি করা এবং সেগুলি অন্তর্ভুক্ত করা।

myproject/
    myproject.ino
    somelib.h
    somelib.cpp

আপনার কোড, আপনি করতে পারেন include "somelib.h"

এর নীচের দিকটি হ'ল গ্রন্থাগারগুলি অবশ্যই একই ফোল্ডারে থাকতে হবে, সাব ফোল্ডারগুলিতে নয়, সুতরাং এটি আপনার ডিরেক্টরিটিকে অগোছালো দেখাচ্ছে look


আমার সম্পূর্ণ প্রকল্পের ডিরেক্টরি কাঠামো সম্পর্কিত, স্কেমেটিক্স এবং ডকুমেন্টেশন সহ, খনি সাধারণত:

myproject/
  schematics/ - eagle files or whatever you may have
  docs/       - include relevant datasheets here
  test/       - any test cases or other code to test parts of the system.
  myproject/  - since Arduino code must be in a directory of the same name
    myproject.ino
    ...

আরেকটি খারাপ দিক হ'ল আমাকে অনেক প্রকল্পে একই লাইব্রেরি কপি করতে হবে। এছাড়াও, আমার কাছে এটি পরিষ্কার নয় যে আপনি কেবল নিজের লাইব্রেরিগুলি সেখানে রেখেছেন বা তৃতীয় পক্ষের লাইব্রেরিও রেখেছেন?
jfpoil ব্যাখ্যা

প্রথম পয়েন্ট: এটি আসলে কোনও ডাউন সাইড নয়, এটি সংস্করণ নিয়ন্ত্রণের সাথে আপনি যেমন চান লাইব্রেরি এবং প্রকল্প উত্সকে একসাথে রাখার কেবলমাত্র একটি পার্শ্ব প্রতিক্রিয়া। যদি অন্য প্রকল্পের লাইব্রেরির একটি আপডেট সংস্করণ প্রয়োজন? আপনি যদি এটি পরিবর্তন করেন? দ্বিতীয় বিষয়: উভয়ই কাজ করবে।
সত্যেন

1
আমি পারিনা. আরডুইনো আইডিই বিভিন্ন উপায়ে বেশ সীমিত। আপনি আরও ভাল পরিবেশে কাজ করতে পারেন এটির জন্য এর আরও ভাল সমর্থন রয়েছে। লোকেরা কাস্টম মেক ফাইল তৈরি করেছে যা আপনাকে অন্যান্য উত্স থেকে লাইব্রেরি আমদানি করতে দেয়।
সত্যেন

1
সফ্টওয়্যার লাইসেন্সের দৃষ্টিকোণ থেকে প্রকল্পগুলি সংগঠিত করার পক্ষে এটি ভাল উপায় নয়। আপনি যদি আপনার প্রকল্পে তৃতীয় পক্ষের লাইব্রেরিগুলি অন্তর্ভুক্ত করছেন, যার বিভিন্ন লাইসেন্স থাকতে পারে, তবে আপনি প্রকল্পের ফাইলটি ভাগ করে নেওয়া শুরু করার সাথে সাথে আপনি সেগুলি লঙ্ঘন করতে পারেন। বিভিন্ন ওপেন সোর্স লাইসেন্স সাধারণত একে অপরের সাথে সামঞ্জস্য নয়।
asheeshr

3
@ আখেশআর আপনার সমস্ত ফাইল এক ডিরেক্টরিতে রাখে যাতে আরডুইনো আইডিই অভিযোগ না করে তবে প্রকল্পগুলি বিন্যাস করার কোনও ভাল উপায় নয়। এটি কেবল একটি উপায়। আরও ভাল সমাধান প্রস্তাব নির্দ্বিধায়। আমি এমন কোনওটির কথা জানি না যা এখনও আপনাকে আরডিনো সফ্টওয়্যার ব্যবহার করতে দেয়।
সত্যেন

20

একাধিক নেস্টেড সংগ্রহস্থলগুলি সংগঠিত করার ক্ষেত্রে গিট সাবমডিউলগুলি অত্যন্ত শক্তিশালী। বিভিন্ন উত্স থেকে একাধিক গ্রন্থাগার হ্যান্ডলিং করা এবং এমনকি আপনার নিজস্ব প্রকল্পের কিছু অংশ যা বিভিন্ন উত্সে সঞ্চিত থাকতে পারে তা হ'ল গিট সাবমডিউলগুলির সাহায্যে সহজ হয়ে যায়।

ডিরেক্টরি কাঠামো

আপনার প্রকল্পগুলি সংগঠিত করার একটি উপায় হ'ল:

  • প্রজেক্টএ - মূল ডিরেক্টরি

    • প্রজেক্টএ - সূত্র কোড ডিরেক্টরিটিতে আরডুইনো কোড রয়েছে

      1. projectA.ino
      2. header.h
      3. implementation.cpp
    • ডক্স - আপনার মূল ডকুমেন্টেশন ডিরেক্টরি

    • স্কিম্যাটিক্স - এগুলি পৃথক পৃথক গিট রেপো বা একই রেপোর অংশে আলাদাভাবে রক্ষণাবেক্ষণ করা যেতে পারে

    • libs - এটিতে আপনার তৃতীয় পক্ষের লাইব্রেরি থাকবে।

      1. libA - এগুলি তৃতীয় পক্ষের সংগ্রহস্থল হিসাবে রক্ষণাবেক্ষণ করা যেতে পারে
      2. libC - ...
    • লাইসেন্স

    • README

    • Makefile - ডিরেক্টরি জুড়ে নির্ভরতা পরিচালনা করতে প্রয়োজনীয়

কর্মধারা

আপনি আপনার সাধারণ চক্র অনুসরণ করবেন, মূল সংগ্রহস্থল সম্পর্কিত যতটা পরিবর্তন যুক্ত, প্রতিশ্রুতিবদ্ধ। সাব-রিপোজিটরিগুলির সাথে জিনিসগুলি আকর্ষণীয় হয়ে উঠেছে।

আপনার কাছে আপনার মূল সংগ্রহস্থলের মূল ডিরেক্টরিতে একটি সংগ্রহস্থল যুক্ত করার বিকল্প রয়েছে। এর অর্থ হ'ল আপনার ডিরেক্টরি কাঠামোর যে কোনও অংশ, যেমন ডকস, স্কিম্যাটিক্স, ইত্যাদি পৃথক সংগ্রহস্থল হিসাবে বজায় রাখা যেতে পারে এবং এ থেকে ক্রমাগত আপডেট হওয়া যায়।

আপনি git submodule add <repo.git>কমান্ডটি ব্যবহার করে এটি করতে পারেন । এটি আপ টু ডেট রাখতে আপনি ব্যবহার করতে পারেন git submodule update <path>

আপনার ভাণ্ডারের মধ্যে একাধিক তৃতীয় পক্ষের লাইব্রেরি রক্ষণাবেক্ষণের বিষয়টি যখন আসে তখন প্রত্যেকটি নিজের মধ্যেই সংস্করণটিকে নিয়ন্ত্রিত করা যায় বা প্রয়োজন অনুসারে প্রতিটি আপ টু ডেট রাখা যায়, গিট সাবমোডিয়ুলটি আবার আপনার দিনকে বাঁচায়!

Libs এ তৃতীয় পক্ষের রেপো যুক্ত করতে কমান্ডটি ব্যবহার করুন git submodule add <lib1.git> libs/lib1। তারপরে, মুক্তির চক্রের একটি নির্দিষ্ট পয়েন্টে গ্রন্থাগারটি বজায় রাখতে লাইব্রেরিটি চেকআউট করুন এবং একটি প্রতিশ্রুতিবদ্ধ করুন। লাইব্রেরিটি আপ টু ডেট রাখার জন্য কমান্ডটি ব্যবহার করুন git submodule update <path>

এখন, আপনি মুক্ত রিপোরিটরির পাশাপাশি একাধিক তৃতীয় পক্ষের লাইব্রেরি মুক্ত করার জন্য একাধিক সংগ্রহস্থল সংরক্ষণ করতে পারেন।

ভার্সেস সিঙ্গল ডিরেক্টরি অ্যাপ্রোচ

যদিও একক ডিরেক্টরি পদ্ধতির সহজতম, ততক্ষণ ব্যথা ব্যতীত কোনও ডিরেক্টরিতে নিয়ন্ত্রণের অংশগুলির সংস্করণ করা সম্ভব নয়। অতএব, সহজ পদ্ধতির প্রকল্পে বিভিন্ন রাজ্যের সাথে বিভিন্ন সংগ্রহস্থলগুলি সমন্বিত করতে ব্যর্থ।

এই পদ্ধতির সাহায্যে একাধিক সংগ্রহস্থল বজায় রাখা যায় তবে সংকলন এবং লিঙ্কিংয়ের প্রক্রিয়াটি পরিচালনা করার জন্য মেকফিলের প্রয়োজনীয়তা আনা হয়।

আপনার প্রকল্পের জটিলতার উপর নির্ভর করে অনুকূল পদ্ধতির নির্বাচন করা যেতে পারে।


1
+1, তবে কেবল একটি সিডেনোট হিসাবে: গিট সাবমডিউলগুলি বেশ অস্থির এবং সম্ভবত আলগা ট্র্যাক। যদি আপনি একটি একক ডিরেক্টরি বা গুণিতক (যেমন ব্যবহার এটা কোনো পার্থক্য করে তোলে vendor, node_modulesইত্যাদি)। গিট সেগুলি উল্লেখ করে এবং এটি ট্র্যাক করে রাখে।
কায়সার

"আপনি যদি কোনও একক ডিরেক্টরি বা গুণক (যেমন বিক্রেতা, নোড_মডিউল ইত্যাদি) ব্যবহার করেন তবে তাতে কোনও পার্থক্য নেই" " আমি এই অংশটি বুঝতে পারি না। আপনি বিস্তারিত বলতে পারেন?
asheeshr

17

অবশেষে আমি আমার প্রকল্পগুলির জন্য অনুসরণ করার সিদ্ধান্ত নিয়েছি।

যাও Arduino-CMake

আমি যে প্রথম গুরুত্বপূর্ণ সিদ্ধান্ত নিয়েছিলাম তা হ'ল একটি বিল্ড টুলের পছন্দ যা আমার পরিবেশের জন্য কাজ করতে পারে (উইন্ডোজ) তবে এটি সীমাবদ্ধ ছিল না (আমি চাই যে আমার প্রকল্পগুলি অন্য লোকেরা সহজেই পুনরায় ব্যবহারযোগ্য))

আমি বিভিন্ন ওপেন সোর্স আরডুইনো মেক সরঞ্জাম পরীক্ষা করেছি:

  • গাইজমো মেকফিল (@ জুমো উত্তর অনুসারে প্রস্তাবিত): এটি আর্দুইনো বিল্ডসের জন্য কেবল একটি স্ট্যান্ডার্ড মেকফিল হ্যান্ডস্ক্রাফ্ট; এটি একটি ইউনিক্স মেকফিল তবে উইন্ডোজের জন্য ইউনিক্স মেকের একটি ভাল বন্দর রয়েছে; তবুও, দুর্ভাগ্যক্রমে এই মেকফিলটি কেবল ইউনিক্সের জন্যই কাজ করে, অবশ্যই এটি উইন্ডোজের জন্য অভিযোজিত হতে পারে তবে আমি একটি সরঞ্জাম চেয়েছিলাম যা "বাক্সের বাইরে" কাজ করে।
  • আরডুইনো - মেকফিল (@ অ্যাডনিউজ উত্তর দ্বারা প্রস্তাবিত): এটি ইউনিক্স মেকফিলের উপর ভিত্তি করে আরও উন্নত প্রকল্প, যার লক্ষ্য সমস্ত আরডুইনো প্রকল্পগুলি সহজেই পুনরায় ব্যবহারযোগ্য হবে; এটি ম্যাক, লিনাক্স এবং উইন্ডোজে কাজ করে হিসাবে নথিভুক্ত করা হয়েছে, তবে উইন্ডোজ সমর্থনটি আমার প্রথম পরীক্ষায় (ইউনিক্স শেলের উপর অনেক নির্ভরতা) ভুল প্রমাণিত হয়েছে।
  • Graduino (যে কোন উত্তর দ্বারা প্রস্তাবিত নয়): এই বিল্ড টুল সুপরিচিত উপর ভিত্তি করে তৈরি gradle থেকে বিল্ড টুল খাঁজকাটা বিশ্বের; সরঞ্জামটি বেশ ভালভাবে সম্পন্ন হয়েছে বলে মনে হচ্ছে তবে কিছু (সামান্য) গ্রোভী / গ্রেডল নলেলেগডের দরকার পড়ে এবং এতে খুব কম ডকুমেন্টেশন রয়েছে; আমি ঠিক করেছি এর জন্য গ্রোভি এবং গ্রেড ইনস্টল করার বোঝার কারণে আমি এটির সাথে না যাওয়ার সিদ্ধান্ত নিয়েছি (আমি তাদের পরিবেশে আমার প্রকল্পগুলি তৈরি করতে চাই এমন লোকদের অনেক বেশি প্রয়োজনীয় প্রয়োজনীয়তা এড়াতে চাই)।
  • আরডুইনো-সিএমকে (কোনও উত্তর দ্বারা প্রস্তাবিত নয়): এটি সর্বোত্তম বলে মনে হয়, এর দীর্ঘ ইতিহাস রয়েছে, এর অনেক সমর্থক এবং রক্ষণাবেক্ষণকারী রয়েছে, খুব ভালভাবে নথিভুক্ত রয়েছে, সাধারণ উদাহরণ সহ এসেছে এবং এর সাথে কয়েকটি ভাল টিউটোরিয়াল ব্লগ পোস্ট রয়েছে ওয়েব, যেমন এখানে এবং সেখানে । এটি সিএমকে , "ক্রস-প্ল্যাটফর্ম মেক" এরউপর ভিত্তি করে।

আমি আরডুইনো ডেভেলও পেয়েছি, আরডুইনো বিল্ড টুল-যা আমি পরীক্ষা-নিরীক্ষা করি নি- যা ইউনিক্স মেকফিলস বা পিঁপড়ের build.xml ফাইল তৈরি করতে পারে ; এটি একটিকে আকর্ষণীয় বলে মনে হয়েছিল তবে কার্যকারিতার দিক থেকে কিছুটা সীমিত।

শেষ পর্যন্ত আমি আরডুইনো-সিএমকে নিয়ে যাওয়ার সিদ্ধান্ত নিয়েছি :

  • এটি সেটআপ করা সহজ ছিল: আপনার মেশিনে কেবল সিএমকে ইনস্টল করুন এবং আপনার প্রকল্প ডিরেক্টরিগুলি থেকে সহজেই অ্যাক্সেসযোগ্য (ডিরেক্টরিতে আপেক্ষিক পাথের মাধ্যমে) এমন কোনও ডিরেক্টরিতে আরডিনো-সিএমকে অনুলিপি করুন।
  • উদাহরণগুলি বাক্সটির বাইরে কাজ করেছিল ( CMakeLists.txtআমার পরিবেশের জন্য প্রয়োজনীয় বৈশিষ্ট্যগুলি যেমন অভিযোজিত আর্দিনো টাইপ, সিরিয়াল পোর্ট) এর জন্য কনফিগারেশন ফাইলে দেওয়া মন্তব্যগুলি অনুসরণ করেছে )
  • আপনি আপনার প্রকল্পগুলি যেভাবে চান সংগঠিত করতে পারেন
  • এটি সেখানে বাইরের বিভিন্ন বিল্ড সরঞ্জামগুলির জন্য কনফিগারেশন ফাইলগুলি তৈরি করতে পারে (আমি কেবল ইউনিক্স মেকফাইলগুলিই পরীক্ষা করেছি ), সহ এক্সিলিপ প্রকল্পগুলি।
  • উত্পন্ন উত্পাদনে, বিভিন্ন লক্ষ্যগুলি সমর্থন করার জন্য তৈরি হয়:

    • লাইব্রেরি নির্মাণ
    • প্রোগ্রাম নির্মাণ
    • প্রোগ্রাম বোর্ডে আপলোড
    • সিরিয়াল মনিটর প্রবর্তন
    • এবং আরও কয়েকজন আমি এখনও পরীক্ষা করি নি

প্রকল্পের কাঠামো

যেহেতু আরডুওনো-সিএমকে আপনার প্রকল্পের জন্য কোনও ডিরেক্টরি কাঠামো চাপিয়ে দেয় না, তাই আপনি এটি সেরা চয়ন করতে পারেন।

এখানে আমি ব্যক্তিগতভাবে যা করেছি (এটি এখনও আরও পরিমার্জন প্রয়োজন, তবে আমি এখন এতে খুশি):

এখানে চিত্র বর্ণনা লিখুন

আমি আমার সমস্ত প্রকল্পগুলি একটি সাধারণ arduino-stuffডিরেক্টরিতে রাখার সিদ্ধান্ত নিয়েছি (যা আমি সামগ্রিকভাবে গিথুবকে প্রতিশ্রুতিবদ্ধ করি, আমি জানি আমি গিথুবকে আরও ভাল সংস্থার জন্য গিট সাবমডিউলগুলি ব্যবহার করতে পারি , তবে এখনও এটি পরীক্ষা করার সময় নেই)।

arduino-stuff নিম্নলিখিত বিষয়বস্তু রয়েছে:

  • build: এটি এমন একটি ডিরেক্টরি যেখানে cmake এবং make তাদের সমস্ত জিনিস তৈরি করে (মেকফাইলস, ক্যাশে, অবজেক্ট ফাইল ...); এই এক গিথুব প্রতি প্রতিশ্রুতিবদ্ধ না
  • cmake: এটি আরডুইনো-সিএমকে ক্যামেক ডিরেক্টরিটির কেবল একটি অনুলিপি ( অশোধিত ) । এটি একজন গিথুবকে পেয়ে যায় যাতে আমার প্রকল্পগুলি তৈরি করতে চায় এমন ব্যক্তির পক্ষে আরও সহজ
  • CMakeLists.txt: এটি "গ্লোবাল" সিএমকে কনফিগারেশন যা আমার পরিবেশের জন্য সমস্ত ডিফল্ট (বোর্ড, সিরিয়াল পোর্ট) এবং বিল্ড টার্গেট সাব-ডিরেক্টরিগুলির তালিকা ঘোষণা করে
  • TaskManager: এটি আমার প্রথম প্রকল্পটি আড়ডিনো-সিএমকে ভিত্তিক, এটি একটি উদাহরণ সহ একটি গ্রন্থাগার; এই পরিচয়পত্রটিতেও একটি রয়েছে CMakeLists.txtযা প্রকল্পের জন্য লক্ষ্যগুলি উল্লেখ করে

উন্নতির জন্য পয়েন্ট

বর্তমান সমাধান যদিও নিখুঁত নয়। আমি যে উন্নতিগুলি দেখতে পাচ্ছি তার মধ্যে (এটি যদি अर्ডিনো-সিএমেক প্রকল্পের উপযুক্ত হয় তবে এই উন্নতিগুলি অন্তর্ভুক্ত করার জন্য):

  • বর্তমান প্রকল্প থেকে আরডুইনো লাইব্রেরি ডিরেক্টরিতে একটি লাইব্রেরি ডিরেক্টরি অনুলিপি করার বৈশিষ্ট্য
  • গিথুবে একটি লাইব্রেরি আপলোড করার বৈশিষ্ট্য
  • গিথুব থেকে একটি লাইব্রেরি ডাউনলোড করার বৈশিষ্ট্য

2
আপনি কি প্ল্যাটফর্মআইও চেষ্টা করেছেন? আপনি যখন এই প্রশ্নটি জিজ্ঞাসা করেছিলেন তখন এটি প্রায় না হয়ে থাকতে পারে .. প্ল্যাটফর্মিয়ো.অর্গ
ওহোরব

4
MyProject
|_MyProject
  |_MyProject.ino
  |_data
  |  |_documentation 
  |  |_PCB
  |  |_schematics
  |_src
     |_MyProjectLibrary1
     |_ThirdPartyLibrary

মাইপ্রজেক্ট ফোল্ডার (সংগ্রহস্থল মূল)

আমি আপাতদৃষ্টিতে অপ্রয়োজনীয় MyProjectমূল ফোল্ডারের পরামর্শ দেওয়ার কারণটি হ'ল আপনি গিটহাব ব্যবহার করে উল্লেখ করেছেন। আপনি যখন গিটহাব সংগ্রহস্থলের বিষয়বস্তু ডাউনলোড করেন (ক্লোন না করে) তখন শাখা বা ট্যাগের নামটি সংগ্রহস্থলের নামের সাথে যুক্ত করা হয় (উদাঃMyProject-master)। আরডুইনো আইডিইতে স্কেচ ফোল্ডারের নাম স্কেচ ফাইলের নামের সাথে মেলে। আপনি যদি একটি .ino ফাইল খুলেন যা ফোল্ডারে থাকা স্কেচের নামের সাথে মেলে না, আরডুইনো আইডিই আপনাকে যথাযথ নামযুক্ত স্কেচ ফোল্ডার তৈরি করার অনুরোধ জানায় এবং স্কেচটি সেই ফোল্ডারে সরিয়ে দেয়। এটি ব্যবহারকারীর জন্য খুব ভাল প্রাথমিক অভিজ্ঞতা না হওয়ার পাশাপাশি আরও বৃহত্তর সমস্যাটি হ'ল আরডুইনো আইডিই অন্য সংযুক্ত ফাইলগুলি সদ্য নির্মিত ফোল্ডারে অনুলিপি করতে পারে না, যার ফলে প্রোগ্রামটি আর সংকলন না করতে পারে। সাবফোল্ডারে স্কেচটি রেখে আপনি গিটিহবকে স্কেচ ফোল্ডারের নাম পরিবর্তন করতে এড়াতে পারবেন।

যদি গিটহাব ফাইলের নাম জিনিসটি আপনার পক্ষে সমস্যা না হয় তবে অপ্রয়োজনীয় রুট ফোল্ডারটি প্রয়োজন হয় না।

ডেটা ফোল্ডার

আমি dataআপনার নন-কোড ফাইলগুলির জন্য সাবফোল্ডারটি ব্যবহার করার পরামর্শ দিচ্ছি কারণ আরডুইনো আইডিইর সেই নামের সাবফোল্ডারগুলির একটি বিশেষ চিকিত্সা রয়েছে। আপনি কোনও ফাইল> সেভ করুন ... করুন যখন সেগুলি নতুন স্থানে অনুলিপি করা হয় । অন্য কোনও নামের সাবফোল্ডারগুলি তা নয়।

src ফোল্ডার

srcSubfolder যার ফলে বিশেষ সম্পত্তি হয়েছে রিকার্সিভ সংকলন । এর অর্থ হ'ল আপনি সেই ফোল্ডারে লাইব্রেরিগুলি ছেড়ে যেতে পারেন এবং এটি আপনার স্কেচ থেকে এটি অন্তর্ভুক্ত করতে পারেন:

#include "src/MyProjectLibrary1/MyProjectLibrary1.h"
#include "src/ThirdPartyLibrary/ThirdPartyLibrary.h"

যাও Arduino 1.5 লাইব্রেরী বিন্যাস ফোল্ডারের গঠন এছাড়াও সমর্থিত, আপনি শুধুমাত্র আপনার ঠিক করতে #includeতদনুসারে বিবৃতি।

মনে রাখবেন যে কেবল আরডুইনো আইডিই 1.6.10 (আরডুইনো-নির্মাতা 1.3.19) এবং আরও নতুন সমর্থন রিকার্সিভ স্কেচ সংকলন।

দুর্ভাগ্যক্রমে কিছু লাইব্রেরি #includeস্থানীয় ফাইলের জন্য ভুল বাক্য গঠন ব্যবহার করে (উদাহরণস্বরূপ #include <ThirdPartyLibrary.h>পরিবর্তে #include "ThirdPartyLibrary.h")। এটি এখনও কাজ করে যখন লাইব্রেরিটি আরডিনো librariesফোল্ডারগুলির মধ্যে একটিতে ইনস্টল করা হয় তবে লাইব্রেরিটি স্কেচের সাথে বান্ডিল হয়ে গেলে কাজ করে না। সুতরাং কিছু লাইব্রেরিতে এইভাবে ব্যবহার করার জন্য ছোটখাটো সম্পাদনা প্রয়োজন হতে পারে।

আমি স্কেচ ফোল্ডারের মূলটিতে সমস্ত লাইব্রেরি ফাইলগুলি ডাম্পিংয়ের বিকল্পের পক্ষে এটির পক্ষে বেশি পছন্দ করি কারণ এটি অগোছালো এবং আপনি যখন স্কেচটি খুলবেন তখন প্রতিটি লাইব্রেরি ফাইলটি আরডুইনো আইডিইতে ট্যাব হিসাবে প্রদর্শিত হবে (অবশ্যই আপনি যে কোনও উত্স ফাইল করেন) আরডুইনো আইডিই থেকে সম্পাদনযোগ্য হতে চান স্কেচ রুট ফোল্ডারে রাখা উচিত)।

জায়গায় বান্ডিল গ্রন্থাগারগুলি ব্যবহার করতে সক্ষম হওয়া আপনার অন্য লক্ষ্যগুলির সাথে সামঞ্জস্যপূর্ণ:

তাকে যতটা সম্ভব সহজে তৈরি করার জন্য কোনও বন্ধুকে প্রেরণ করুন

ম্যানুয়ালি লাইব্রেরি ইনস্টল করার প্রয়োজনীয়তা অপসারণ প্রকল্পটি ব্যবহার করা আরও সহজ করে তোলে।

এটি পূর্বে ইনস্টল থাকা একই নামের লাইব্রেরী ফাইলগুলির অন্যান্য সংস্করণগুলির সাথে দ্বন্দ্বের কোনও সম্ভাবনা এড়াতে পারে।


3

আরডুইনো কোডগুলি সংকলনের জন্য আপনি মেকফিল https://github.com/sudar/Ardino- মেকফিল ব্যবহার করতে পারেন । অগত্যা আপনার আইডিই লাগবে না।


1
আমি চেষ্টা করেছি কিন্তু দুর্ভাগ্যক্রমে এটি কেবল ইউনিক্স মেশিনে কাজ করবে এবং আমার উইন্ডোজ সমর্থন প্রয়োজন। বর্তমানে আমি সিএমকে ভিত্তিক আরেকটি প্রকল্পের মূল্যায়ন করছি তবে আমি এটি এখনও শেষ করি নি। আমি কোনও সরঞ্জাম স্থির করার পরে আমি একটি উত্তর পোস্ট করব।
jfpoil ব্যাখ্যা

0

সম্ভবত খেলাটি দেরীতে হয়েছে তবে ইতিমধ্যে পোস্ট করা কিছুটা ভিন্ন পদ্ধতির সাহায্যে উত্তর দেওয়ার পক্ষে এটি একটি জনপ্রিয় যথেষ্ট প্রশ্ন।

আপনার যদি আরডুইনো আইডিইয়ের সাথে সামঞ্জস্যতা বজায় রাখার প্রয়োজন হয় তবে আপনি এখানে যেমন আমি উল্লেখ করেছেন তার মতো কিছু ব্যবহার করতে পারেন:

https://gitlab.com/mikealger/ExampleArduinoProjectStructure/tree/master/ExampleSketchBook

আমি এর বেশিরভাগটিকেই আরডুইনো - প্রকল্পের কাঠামো এবং বিল্ডিং প্রক্রিয়া এবং কয়েক বছর ধরে আমি গ্রহণ করেছি এমন কিছু টিপসের নোটগুলি ভিত্তিতে তৈরি করেছি।

আমি সরাসরি জানি না কেন এটি সরাসরি আর্দুইনো পৃষ্ঠাগুলির মাধ্যমে খুঁজে পাওয়া এতটা কঠিন, এটি একটি অর্ধ পেশাদার ব্যাকগ্রাউন্ড থেকে নির্বাক বলে মনে হচ্ছে যে বিল্ডিং প্রক্রিয়াটি এতটা বেমানান।

শুভেচ্ছা সেখানে আউট


গিটল্যাব লিঙ্কটি নষ্ট হয়ে গেছে বলে মনে হচ্ছে
গ্রিননলাইন

বিজোড় এটি সরাসরি লিঙ্ক আউট সঙ্গে কাজ করে? যেমন gitlab.com/mikealger/ExampleArdinoProjectStruct
মাইক

প্রকৃতপক্ষে উভয় লিঙ্কই ফায়ারফক্সে কাজ করে তবে আমার পুরানো ক্রোম সংস্করণ 49.0.2623.112 (-৪-বিট) এ দুটোই কাজ করে না। ভাবার মতো কিছুই নেই, আমার ধারণা। :-)
গ্রিননলাইন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.