










وثائق المشروع
C ++ هي لغة رائعة لاستخدامها في التطبيقات المدمجة والقوالب هي جانب قوي. يمكن أن تقدم المكتبة القياسية قدرًا كبيرًا من الوظائف التي تم اختبارها جيدًا ، ولكن هناك بعض أجزاء المكتبة القياسية التي لا تتناسب بشكل جيد مع السلوك الحتمي ومتطلبات الموارد المحدودة. عادةً ما تمنع هذه القيود استخدام الذاكرة المخصصة ديناميكيًا والحاويات بأحجام نهاية مفتوحة.
ما هو مطلوب هو مكتبة قالب حيث يمكن للمستخدم إعلان الحجم ، أو الحد الأقصى لحجم أي كائن مقدمًا. لا تدعم معظم المترجمين المدمجة حاليًا المعيار الذي يتجاوز C ++ 03 ، وبالتالي باستثناء المبرمج من استخدام الميزات المحسنة للمكتبة اللاحقة.
هذا ما يحاول ETL تحقيقه.
ETL غير مصمم لاستبدال STL بالكامل ، ولكن يكمله. يغطي هدف التصميم ثلاثة مجالات.
تم تصميم مكتبة القالب المدمجة لتطبيقات أقل الموارد المدمجة. أنه يحتوي على مجموعة من الحاويات والخوارزميات والمرافق ، والتي يحاكي بعضها أجزاء من STL. لا يوجد تخصيص ذاكرة ديناميكية. المكتبة لا تستخدم الكومة. جميع الحاويات لديها سعة ثابتة مما يتيح تحديد جميع تخصيص الذاكرة في وقت الترجمة. المكتبة مخصصة لأي مترجم يدعم C ++ 98/03/11/14/17/20.
أي مساعدة في نقل المكتبة للعمل تحت منصات مختلفة وسيتم تلقي المترجمين بامتنان. أنا مهتم بشكل خاص بالأشخاص الذين يستخدمون Keil و IAR و Green Hills و Ti Code Composer وما إلى ذلك ، والمعادن العارية أو RTOs ، و DSPs.
انظر (https://www.etlcpp.com) للحصول على معلومات محدثة.
يمكنك العثور على خطوات الإعداد هنا.
طريقة واحدة لاستخدام هذه المكتبة هي إسقاطها في مكان ما في دليل المشروع الخاص بك ثم إتاحة المكتبة باستخدام add_subdirectory
add_subdirectory (etl)
add_executable (foo main.cpp)
target_link_libraries (foo PRIVATE etl::etl)إذا تم استخدام مكتبة ETL كوحدة فرعية GIT ، فقد تتطلب تكوينًا إضافيًا لدقة إصدار ETL الصحيح من خلال السماح بالبحث عن مجلد GIT خارج دليل جذر المكتبة.
set (GIT_DIR_LOOKUP_POLICY ALLOW_LOOKING_ABOVE_CMAKE_SOURCE_DIR)
add_subdirectory (etl) إذا كنت ترغب في تثبيت هذه المكتبة باستخدام CMake ، فيمكنك تنفيذ الخطوات التالية. في Linux ، قد تكون هناك حاجة إلى حقوق المستخدم الفائقة لتثبيت المكتبة ، لذلك قد يكون من الضروري إضافة sudo قبل الأمر الأخير:
git clone https://github.com/ETLCPP/etl.git
cd etl
git checkout < targetVersion >
cmake -B build .
cmake --install build/ بعد تثبيت المكتبة ، يمكنك استخدام Find_Package لاستخدام المكتبة. استبدل <majorVersionRequirement> بإصدارك الرئيسي المطلوب:
find_package (etl <majorVersionRequirement>)
add_executable (foo main.cpp)
target_link_libraries (foo PRIVATE etl::etl) بدلاً من ذلك ، يمكنك استخدام FetchContent ، واستبدال <targetVersion> مع الإصدار للتثبيت استنادًا إلى علامة GIT:
Include(FetchContent)
FetchContent_Declare(
etl
GIT_REPOSITORY https://github.com/ETLCPP/etl
GIT_TAG < targetVersion >
)
FetchContent_MakeAvailable(etl)
add_executable(foo main.cpp)
target_link_libraries(foo PRIVATE etl::etl) يتوفر محتوى هذا الريبو كمكتبة في Arduino IDE (ابحث عن "مكتبة القالب المدمجة" في مدير مكتبة IDE). يتوفر مستودع مكتبة Arduino على https://github.com/ETLCPP/etl-arduino ، انظر هناك لمزيد من التفاصيل.