سؤال

لقد كنت أستخدم Make و Makefiles لسنوات عديدة ، وعلى الرغم من أن المفهوم سليم ، إلا أن التنفيذ لديه شيء مطلوب.

هل وجد أي شخص أي بدائل جيدة لجعل ذلك لا يعتبر المشكلة؟

هل كانت مفيدة؟

المحلول

الدفع سلبيات.على سبيل المثال، يستخدمه Doom 3 وBlender.

نصائح أخرى

لدي الكثير من الأصدقاء الذين أقسموا بـ CMake للتطوير عبر الأنظمة الأساسية:

http://www.cmake.org/

إنه نظام البناء المستخدم لـ فتك (من بين أشياء أخرى)، وهي مكتبة C++ تحتوي على روابط Python وTcl وJava عبر الأنظمة الأساسية.أعتقد أنه ربما يكون الشيء الأقل تعقيدًا الذي ستجده مع هذه الإمكانات العديدة.

يمكنك دائمًا تجربة المعيار أدوات تلقائية.من السهل جدًا تجميع ملفات Automake معًا إذا كنت تعمل على نظام Unix فقط وإذا كنت ملتزمًا باستخدام C/C++.يعد التكامل أكثر تعقيدًا، والأدوات التلقائية بعيدة كل البعد عن أبسط نظام على الإطلاق.

لقد تم ترحيل بعض مشاريع جنوم إلى waf.

إنه يعتمد على Python، مثل Scons، ولكنه أيضًا مستقل - لذا بدلاً من مطالبة المطورين الآخرين بتثبيت أداة البناء المفضلة لديك، ما عليك سوى نسخ البرنامج النصي للبناء المستقل في مشروعك.

أوصي باستخدام مجرفة.إنها أسهل أداة وجدتها.

الأدوات الجيدة الأخرى التي استخدمتها، إذا لم تكن روبي هي الشيء الذي تفضله، فهي:

افعلها هي أداة بيثون.يعتمد على مفاهيم أدوات البناء ولكنه أكثر عمومية.

  • يمكنك تحديد كيفية تحديث المهمة/القاعدة (ليس فقط التحقق من الطوابع الزمنية، الملفات الهدف غير مطلوبة)
  • يمكن حساب التبعيات ديناميكيًا بواسطة مهام أخرى
  • يمكن أن تكون إجراءات المهمة عبارة عن وظائف بايثون أو أوامر shell

كن على علم ب ninja أداة البناء (الإصدار 1.8.2 سبتمبر 2017) والتي تتأثر بـ tup و redo.

مولد ملف البناء cmake (على سبيل المثالبالنسبة لـ Unix Makefiles، يمكن أيضًا إنشاء Visual Studio وXCode وEclipse CDT، ...). ninja إنشاء الملفات منذ الإصدار 2.8.8 (أبريل 2012) و afaik، ninja أصبحت الآن أداة الإنشاء الافتراضية التي يستخدمها cmake.

ومن المفترض أن يتفوق على make أداة (تتبع تبعية أفضل ومتوازي أيضًا).

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

لاحظ أنه بالنسبة لـ c/c++، يكون وقت الترجمة محدودًا في بعض الأحيان بسبب الرؤوس المضمنة من خلال المعالج المسبق (خاصة عند استخدام libs للرأس فقط، على سبيل المثال يعزز & eigen) والذي نأمل أن يتم استبداله باقتراح وحدات (في مراجعة فنية لـ c++ 11 أو في نهاية المطاف في c++ 1y).ألق نظرة على هذا عرض تقديمي للحصول على تفاصيل حول هذه المسألة.

لقد كتبت أداة تسمى من أجل التي حاولت جعل كتابة الأشياء المشابهة للملفات سهلة القراءة والكتابة.

يعتمد الأمر نوعًا ما على ما تحاول القيام به.لو الجميع الذي تريده هو تبعيات هدف نمط الصنع واستدعاء الأوامر، فإن Make هو في الواقع أحد أفضل الأدوات لهذه المهمة.:-) أشعل النار لطيف جدًا، لكنه قد يكون غير متقن في بعض الحالات البسيطة.Ant هي بالطبع مدينة الإسهاب، لكنها تتمتع بدعم أفضل لبناء لغات شبيهة بـ Java (بما في ذلك Scala وGroovy).أيضا، النمل متاح في كل مكان.هذا هو السبب الرئيسي لاستخدامه.نظرًا لأنه يعمل بشكل متسق على نظام التشغيل Windows، فهو في الواقع متعدد المنصات أكثر من Make.

إذا كنت تريد إدارة التبعية للمكتبات المشابهة لـ Java، فإن Maven هو الخيار الأساسي، لكنني شخصيًا أفضل Buildr كثيرًا.إنه أسرع وأسهل في التخصيص (يعتمد على Rake).لسوء الحظ، فهي ليست في كل مكان تمامًا مثل Maven حتى الآن.

ما زلت أفضل الصنع بعد النظر في مجموعة من البدائل.عندما تقوم بإنشاء التبعيات تلقائيًا إما عبر المترجم أو شيء مثل fastdep، فلن يتبقى الكثير للقيام به.على وجه الخصوص، لا أريد أن يكون برنامج البناء الخاص بي مرتبطًا بلغة التنفيذ، ولا أحب كتابة الأشياء بتنسيق XML عندما تتوفر بدائل أكثر قابلية للقراءة.إن الأداة التي تكشف عن لغة للأغراض العامة لها ميزة، لكن هناك لغة مفسرة أخرى لا (أفيك). ما هو الخطأ في الصنع؟ قد يروق لوجهة نظرك حول الابتعاد عن التصنيع.

/ آلان

يُطلق على نظام صنع روبي اسم Rake: http://rake.rubyforge.org/

تبدو واعدة جدًا.

هناك دائما النملة: http://ant.Apache.org, ، وهو الأمر الذي أجده شخصيًا مروعًا.ومع ذلك، فهو المعيار الفعلي لتطوير Java.

لست متأكدًا مما إذا كنت تطرح السؤال الصحيح هنا.

هل أنت بعد صنع مبسط؟في هذه الحالة، ستحتاج إلى الاستعانة بشخص على دراية كبيرة بـ make لإنشاء سلسلة من ملفات (M|m)ake التي من شأنها تبسيط مشكلتك.

أم أنك ترغب في إلقاء نظرة على التكنولوجيا الأساسية؟هل نرغب في فرض بنية من نوع التصميم حسب العقد والتي تم تضمينها في تصميم التعليمات البرمجية وتنفيذها؟أو ربما اللغة نفسها، على سبيل المثال.Ada ومفهومها للمواصفات (الواجهات) والأجسام (التطبيقات)؟

ما الاتجاه الذي تتبعه سيؤثر بالتأكيد على النتائج المحتملة لمثل هذا السؤال؟

في الأساس، طرق جديدة لبناء الأنظمة من تلك المكونات التي تغيرت بالفعل مقابل اعتماد تقنيات جديدة تحتوي على مثل هذه الآليات المضمنة في التصميم.

آسف أنها ليست إجابة مباشرة.أردت فقط أن أحاول أن أجعلك تقوم بتقييم المسار الذي تريد أن تسلكه.

هتافات،

روب

يعد FlowTracer من RTDA خيارًا جيدًا آخر رأيته مستخدمًا تجاريًا في بيئة واسعة النطاق (عشرات الآلاف من الوظائف): http://www.rtda.com/flowtracer-design-flow-infrastructure-software

يحتوي على واجهة المستخدم الرسومية التي تعرض الرسم البياني للتبعية مع مربعات مرمزة بالألوان للوظائف والأشكال البيضاوية للملفات.عندما يرتفع عدد المهام والملفات، تكون الأداة المستندة إلى واجهة المستخدم الرسومية مثل FlowTracer ضرورية جدًا.

تكلفة الإعداد الأولي أعلى من تكلفة الصنع.هناك منحنى تعليمي لإعداد التدفق الأول باستخدامه.بعد ذلك، يصبح أسرع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top