Occa: دعم cmake

تم إنشاؤها على ٨ أكتوبر ٢٠١٨  ·  11تعليقات  ·  مصدر: libocca/occa

مرحبًا OCCA-ers ،

أي خطط لجعل cmake لإنشاء نظام البناء؟
كل برامج الحوسبة العلمية لدينا تستخدمه. هذا يتطلب مجهودًا جيدًا ولكنه يدفع بمجرد الانتهاء.

الأفضل،

أميك

question help wanted

ال 11 كومينتر

2 سنتي ...

يتم تكوين وبناء العديد من حزم البرامج التي أستخدمها (على سبيل المثال ، VTK) باستخدام cmake ، لكنني لم يعجبني ذلك. ليس كثيرًا بالنسبة للغة وكود cmake الذي يجب على المرء أن يكتبه ، ولكن بالنسبة لـ "مكونات" makefile شديدة الغموض التي يولدها في بنية دليل عميقة ومبهمة. لذا فإن معرفة سبب فشل cmake ، أو سبب عدم تجميع شيء ما بشكل صحيح ، أو كيفية تعديل أحد المباني ، يمكن أن يكون جهدًا غير تافه (بالنسبة لي على الأقل).

يعد إنشاء ملف makefile لبيئة الإنشاء الحالية لكل مواصفات التكوين أمرًا جيدًا بشكل عام ، ولكن مهما كان المولد ، يجب أن ينشئ IMHO ملف makefile واحدًا ومسطحًا ومباشرًا يمكن قراءته ويمكن تعديله (مثل التهيئة الجليلة) ' يفعل). هذا بالتأكيد ليس CMake!

مرحبًا بول ،

أنا لست مغرمًا به ولكن بمجرد تثبيته في مشروع ، يكون متينًا جدًا. الميزة الرئيسية لها هي التكامل والاختبار. على سبيل المثال - لنفترض - سأبدأ بدمج OCCA في رمز كبير نوعًا ما ، سأضع المصدر في دليل يسمى الطرف الثالث ، وإذا كان يستخدم cmake ، فسأخبر cmake بالدليل الجديد add_directory (...) . ثم يقوم ببناء OCCA تلقائيًا ، باستخدام المترجمات والمواصفات الأخرى من "أعلى" CMakeLists.txt. إذا أضفت التبعيات إلى OCCA في برنامج تشغيل اختبار (في البداية) وإلى المزيد من الدلائل المصدر / الأخرى لاحقًا ، فسيكون ذلك أمرًا سهلاً.

تجربتي مع cmake ، هي أنه إذا كانت لديك مشاكل على مستوى "تكوين" ، فعادةً ما تكون المشكلة هي أنك تخصصت كثيرًا (على سبيل المثال ، فرض إشارات المترجم الصريحة ...) في المستوى الأعلى. بالنسبة لمعظم المشاكل ، اجعل VERBOSE = 1 سيكشف عن سطر الترجمة الكامل (الذي يمكنك قصه ولصقه) لمعرفة الخطأ (ثم قم بتغيير cmake (وليس الصنع)).

نستخدم أيضًا ctest طوال الوقت ...

على أي حال ، أردت فقط اختبار الوضع فيما يتعلق بهذا.

الأفضل،

أميك

أنا معجب به ( ربما كثيرًا ) ، في الواقع ، دعم CMake هو أول شيء بحثت عنه. أنا أدير جميع التبعيات (على سبيل المثال في GooFit ) كوحدات git الفرعية في الخارج ، ثم يقوم CMake بفحصها للمستخدم إذا لم يكن على دراية بالوحدات الفرعية ، ثم يجمع CMake جميع التبعيات. إن الشيء العظيم في CMake هو أنه يدعم أي طريقة للعمل - إذا كنت أرغب في استخدام IDE ، على سبيل المثال ، مثل Xcode ، فمن السهل فقط إذا تم استخدام CMake. يمكنني إضافة CCache ، وتصحيح الأخطاء ، و clang-tidy ، وما إلى ذلك بسهولة تامة.

henryiii إذا كان يحتوي على تكامل IDE ، فهذا يبدو كفكرة جيدة!

أنا متردد في إزالة إنشاء Makefile نظرًا لأنه يمكن العثور على make خارج الصندوق في معظم الأماكن ، ولكن يمكننا إضافة دعم CMake بجانبه. يمكننا تحديث تكوين CI لتشغيل الاختبارات باستخدام كلٍ من make و cmake .

إذا كان لديك الوقت ، فهل يمكنك إنشاء علاقات عامة لها باستخدام ملفات CMake الأساسية؟ إذا كان ذلك مفيدًا ، فيمكنني إضافة جميع متغيرات البيئة / الآثار الجانبية المتوقعة أثناء وقت الإنشاء

في الوقت الحالي ، يحتاج مستخدمو OCCA الجدد / المحتملون (مبرمجو HPC) فقط إلى تنزيل مصدر OCCA ، واكتب make . بسيط جدا. بالنسبة لي ، يعتمد عرض القيمة OCCA بنسبة 100٪ على الميزات البارزة التي يوفرها في مجال البرمجة المتوازية ، وليس في نظام البناء الخاص به. ومع ذلك ، ربما تكون هناك قيمة مضافة صغيرة لـ OCCA للانتقال إلى الإنشاءات القائمة على cmake ، لا أعرف.

ربما يمكن لشخص على دراية بتشفير cmake أن يكتب ملفات cmake المطلوبة ويساهم بها في OCCA عبر طلب سحب؟ قد يساعد ذلك في إرضاء المخاوف التي يبدو أن لدى بعض الأشخاص ومساعدتهم على المضي قدمًا لاستخدام OCCA بالفعل.

بالعودة إلى موضوع cmake ، بالنسبة للبعض منا على أي حال ، "قد تختلف الأميال." على محمل الجد ، أنا متأكد من أن حماسي لـ cmake سيرتفع بشكل كبير إذا تعلمت بالفعل كيفية كتابة / تصحيح / تعديل رمز لغة cmake في مستوى يتجاوز مرحلة ما قبل المبتدئ الحالية. في هذه الأثناء ، عندما أواجه مشكلات محبطة مع شخص ما مكتوب بشكل سيئ / قديم ، CMakeLists.txt و / أو عربات التي تجرها الدواب أو التي كتبت بشكل سيء Find*.cmake تعمل بشكل صحيح لبعض الحزم التي قمت بتنزيلها للتو من جيثب للتقييم ، يمكن أن يكون لدي أحاسيس غير سارة من التقدير السلبي!

pdhahn فقط لأكون واضحًا ، لا أعتقد أنني سأتخلص من "النوع الوحيد make للتجميع". بالتأكيد يحتاج إلى التنظيف (# 149) ولكن جعل التثبيت والاستخدام بسيطًا للمستخدمين هو الأولوية الأولى هنا

ستساعد إضافة CMake في استخدام OCCA في المشاريع التي تستخدم بالفعل CMake ويبدو أن حياة المطورين أسهل مع تكامل IDE.

@ dmed256 أنت على حق ، يبدو أن IDE قد يكون قيمة مضافة غير تافهة لـ OCCA!

لكنك تحتاج إلى استيعاب مجموعة متنوعة من IDE الشهير كحد أدنى ، مثل eclipse و Qt Creator.

يدعم CMake جميع أنواع الأدوات (وجميع أنواع الأدوات تدعمها) ، وليس فقط IDEs. جميع IDEs الرئيسية إما مدعومة من قبل CMake أو CMake يدعمها. CLion و Qt Creator و Eclipe و Xcode والمزيد. كما أنه يدعم ارتباط ما تستخدمه ، ودمج ما تستخدمه ، و clang-tidy ، وذاكرة التخزين المؤقت ، وتكاملات الاختبار المختلفة ، والتعبئة ، والمزيد.

إذا كان بناء CMake يعمل بشكل جيد ، فيمكنك في النهاية جعل Makefile يقوم ببساطة بالاتصال بـ CMake نيابة عنك ، لقد فعلت ذلك من قبل في GooFit. قد يكون لديك حتى ملف makefile تنزيل CMake ثم تسميه (لم أجرب ذلك من قبل ، لكني أعتقد أنني تحدثت إلى شخص ما فعل ذلك) ؛ سيسمح ذلك له بالعمل في أي مكان ومع أحدث إصدار (ستحتاج فقط إلى تبديل بسيط يقوم بتنزيل نظام Linux أو macos الثنائي حسب المكان الذي كنت تعمل فيه).

آمل أن أقوم بتقييم Occa في الأسبوعين المقبلين ، وبعد ذلك قد أتمكن من المساعدة في دعم CMake.

henryiii هذا منطقي ، ليس لدينا سوى الكثير من الوقت :) بغض النظر ، نقدر نصيحة CMake!

ختاما الشكر لجميع الأعمال من @ hknibbe2 و SFrijters و amikstcyr و JamesEggleton 🎉

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

awehrfritz picture awehrfritz  ·  7تعليقات

jeremylt picture jeremylt  ·  12تعليقات

dmed256 picture dmed256  ·  4تعليقات

tcew picture tcew  ·  22تعليقات

tcew picture tcew  ·  10تعليقات