أنظمة التجميع. بعد التكوين البسيط ، قم بإجراء التثبيت

اضطر جميعنا أو جميعنا تقريبًا (وإذا لم تكن محظوظًا) إلى تجميع برنامج من الكود المصدري. في الواقع ، في معظم المشاريع ، يكفي إجراء تثبيت ./configure && make && install لتثبيت البرنامج ، لكن دعنا نرى البدائل المختلفة:

صنع غنو

GNU Make هو نظام بناء منخفض المستوى ، يتم تكوين القليل من الأشياء ولا يتم إجراء أي اختبارات:

الايجابيات:

  • منتشر جدا
  • سهل الفهم
  • سريع

سلبيات:

  • شكلي قليلا
  • من الصعب صيانتها
  • لا تجري الاختبارات

make

صنع BSD

يعد BSD Make إصدارًا آخر من Make تستخدمه حاليًا أنظمة التشغيل * BSD. إنه يختلف في GNU Make كونه BSD اجعله أكثر شمولاً في الوظائف على الرغم من أنه أقل انتشارًا.

الايجابيات:

  • سريع
  • سهل الفهم
  • ميزات أكثر من GNU Make

سلبيات:

  • غير منتشر في عالم Linux
  • لا تجري الاختبارات
  • شكلي قليلا
  • من الصعب صيانتها

make

أدوات آلية

Autotools هو نظام GNU الرسمي ويقوم بإنشاء نص برمجي يسمى التكوين الذي يجب أن نستدعيه لإنشاء ملف GNU Make Makefile المقابل. يتم استخدامه على نطاق واسع ، ومع ذلك ، يعتقد المزيد والمزيد من الناس (بمن فيهم أنا) أنه مرهق للغاية وصعب وبطيء وغير متوافق للغاية.

الايجابيات:

  • شكلي للغاية
  • منتشر جدا

سلبيات:

  • إمكانية نقل ضعيفة بين أنظمة غير UNIX
  • قم بإجراء العديد من الاختبارات (تحقق من كل شيء ، وكل شيء هو كل شيء)
  • بطيء جدًا عند التكوين
  • التوافق السيئ مع الإصدارات السابقة

./configure && make

CMake

(نظامي المفضل) CMake هو نظام يأتي لتعويض أوجه القصور في Autotools في العديد من الجوانب ، مثل التوافق الرهيب مع الإصدارات السابقة وإمكانية النقل. أيضًا تحسين نظام الاختبار القابل للتكوين بدرجة عالية لتلبية احتياجات كل مشروع. الحقيقة هي أن المزيد والمزيد من المشاريع تستخدم CMake مثل KDE و PortAudio و Ogre3D وما إلى ذلك. يمكننا التعرف على هذا النوع من الأنظمة بفضل ملف CMakeLists.txt الذي سينشئ ملف Makefile أو مشروعًا لـ Eclipse أو CodeBlocks

الايجابيات:

  • سريع
  • دعم كبير عبر الأنظمة الأساسية
  • يمكن تعريف الاختبارات بطريقة قابلة للتخصيص للغاية

سلبيات:

  • يصعب فهمه في البداية
  • عليك أن تتعامل مع فكرة مجردة قد تكون مخيفة في البداية.
  • امتد قليلا على الرغم من أنه شيئا فشيئا سوف يكون أكثر

cmake . && make

س جعل

QMake هو نظام صممه Trolltech لتجميع المشاريع التي تم إنشاؤها في Qt. وبالتالي ، يركز qmake كثيرًا على Qt وغالبًا ما يكون التنسيق المستخدم بواسطة IDEs مثل QtCreator. إنه شائع جدًا في مشاريع Qt ولكنه غير موجود خارج هذه البيئة:

الايجابيات:

  • متكامل بشكل جيد مع Qt
  • سريع
  • منصة جيدة داخل كيو تي

سلبيات:

  • غير مألوف خارج تطبيقات Qt

qmake . && make

سلبيات

SCons هو نظام قائم على Python لتجميع مشاريع C / C ++. على عكس Autotools ، CMake أو QMake ؛ لا تقوم SCons ببناء ملف Makefile. SCons قابلة للتعديل للغاية ولكنها ربما تكون الأبطأ في العمليات البسيطة
الايجابيات:

  • تعديل سهل
  • خذ الاختبارات العادلة

سلبيات:

  • انتشار ضئيل
  • بطيء

scons

دفعة. جام

Boost.Jam هو إصدار من Perforce Jam يتم استخدامه في مكتبات C ++ Boost الشهيرة ، على الرغم من أنه يمكن استخدام نظام الإنشاء بشكل منفصل. بخلاف GNU Make ، يستخدم Boost.Jam Jamfiles ، وهي نسخة محسنة من Makefiles. تحظى بشعبية كبيرة في بيئة BeOS / Zeta / Haiku.

الايجابيات:

  • سريع
  • الأقصر في الكتابة

سلبيات:

  • انتشار ضئيل
  • صعوبة إجراء الاختبارات

bjam

النينجا

Ninja هو نظام تم تطويره بواسطة Google لتوفير نظام بناء فائق السرعة تم تصميمه في الأصل ليكون هو نظام مشروع Chromium. لم يتم تصميم Ninja ليكون سهل التعديل ، وفقًا لمؤلفيه ، يجب البحث عن نظام يولد Ninja. الموصى بها هي CMake و gyp.

الايجابيات:

  • موي رابيدو

سلبيات:

  • أنت بحاجة إلى نظام آخر لنشر Ninja
  • انتشار ضئيل

ninja

آخرون

يمكنك استخدام أي نظام آخر مثل برنامج Bash أو Python الخاص بك. هناك أيضًا مولدات للغات أخرى غير أصلية يمكن استخدامها مثل Gradle و Maven و gyp وما إلى ذلك.


4 تعليقات ، اترك لك

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   أبيالمارتيل قال

    Make ليس نظام تجميع ، إنه مولد للثنائيات (أو الأهداف) من كود المصدر الخاص به. يمكن استخدامه أيضًا كعداء للمهام.

    أختلف معك في أن عمل BSD أوسع في الوظائف ، وصنع GNU أكثر اكتمالًا ، وله وظائف أكثر. وأنا أقول هذا من تجربتي الخاصة ، في BSD يجب أن أقوم دائمًا بتثبيت GNU make لأن صنع BSD بسيط جدًا مقارنة بصنع GNU.

    أتفق معك في أن Autotools مرهقة للغاية ، وأنا أفضل استخدام Makefile فقط. من الصعب تصحيح ملفات Makefiles التي تم إنشاؤها بواسطة Autotools.

    تحيات!

    1.    شارع أدريان أرويو قال

      شكرا لتعليق!
      في رأيي ، لطالما كان تصميم GNU أكثر تقليدية وإخلاصًا لبرنامج الصنع الأصلي ، وكان تصميم BSD دائمًا أكثر إبداعًا ، لكن ربما لاحظت أشياء أخرى عند إجراء المقارنة.

      الأدوات الآلية هي حقًا صداع كبير. كمساهم في نظام التشغيل Haiku ، كان عليّ أن أقوم بنقل البرامج باستخدام أدوات آلية وهذا أمر رائع. ليس هناك عدد قليل من الحالات التي انتهى بي الأمر فيها إلى إنشاء Makefile أو CMakeLists.txt قبل إصلاح هذه الفوضى.

  2.   تشاك دانيلز قال

    أنا أستخدم حاليًا Premake4 ، وهي قابلة للتكوين للغاية وبسيطة استنادًا إلى البرامج النصية Lua. ألقِ نظرة إذا كنت لا تعرف ذلك.
    تهانينا على المقال ، مرجع بسيط ومختصر ممتاز.

  3.   العظام قال

    يتم استخدام "make check" للتحقق من التجميع بعد استخدام make
    تحية طيبة