cmkr: توليد CMake التصريحي لبناء C++ أنظف
اختبر تدفق بناء تصريحي من خلال كتابة cmake.toml واحدة لإنتاج مشاريع CMake القياسية، بما في ذلك الأهداف والاعتمادياتwords). أنشأ دانكان أوغيلفي cmkr كأداة مساعدة لتغليف CMake مع بيان TOML شبيه بـ Cargo، مع الحفاظ على التوافق مع CMake بينما يقلل من boilerplatewords). تشمل القدرات الرئيسية تكوين TOML، وتوليد CMakeLists.txt تلقائيًا، ودمج FetchContent و vcpkg، والتشغيل الذاتي لـ CI؛ المطورون الذين يرغبون في تقليل كتابة CMake اليدوية يحصلون على أكبر فائدةwords).
ماذا يفعل cmkr من الناحية العملية؟
cmkr يقرأ ملف cmake.toml القابل للقراءة من قبل الإنسان ويولد تلقائيًا ملفات CMakeLists.txt idiomatic. الأداة تقبل بيانات المشروع، تعريفات متعددة للأهداف (تنفيذيات، مكتبات ثابتة ومشتركة)، منطق شرطي، وخيارات محددة للمنصة في TOML، ثم تصدر CMake قياسية يمكن لأي IDE أو خطوة بناء تدرك CMake استهلاكها. هذا يحل محل سكريبتات CMake المكتوبة يدويًا ببيان واحد تصريحي لكل مشروع.
كيف يتصرف في CI والمشاريع المشتركة؟
cmkr يقدم تمهيد ذاتي، لذا يمكن لمستودع أن يتضمن الملفات المولدة وسكريبت تمهيد يسمح للبنائين في الأسفل بالتشغيل باستخدام CMake القياسي فقط ومترجم C++. هذا التصميم يعني أن خطوط أنابيب CI لا تحتاج إلى cmkr مثبت مسبقًا؛ تظل CMake المولدة هي المدخل القياسي للبناء الآلي، مما يجعل مشاركة المشاريع والتكامل مع سير العمل CI القائم أمرًا مباشرًا.
هل cmkr آمن وما مدى صعوبة منحنى التعلم؟
الأداة تحافظ على توافق CMake من خلال إنتاج CMakeLists.txt قياسية، لذا فهي لا تحل محل CMake في وقت البناء. يعيش المنطق الشرطي والقواعد المحددة للمنصة في TOML، مما يتطلب تعلم خريطة cmkr من الإدخالات التصريحية إلى بناء CMake. الخلفية الخاصة بالمطور مع أدوات C++ والخبرة السابقة مع CMake ستقلل من وقت التعلم؛ يستفيد المبتدئون من تكوين أقل تفصيلاً ولكن يجب عليهم تعلم مخطط البيان.
خيار واضح لفرق C++ التي ترغب في بيانات بناء إعلانية
cmkr يناسب المطورين الذين يفضلون كتابة بيان TOML واحد بدلاً من الحفاظ على عدة نصوص CMake؛ إنه يحافظ على توافق المشاريع مع أدوات CMake الحالية وبيئات التطوير المتكاملة بينما يجعل بدء تشغيل المستودع ممكنًا. المقايضة الرئيسية هي طبقة التجريد الإضافية: يجب على الفرق ربط مفاهيم CMake بالمخطط الإعلاني، مما يضيف خطوة تعلم أولية قبل أن تظهر وفورات الوقت.