هذا هو شكل الأمر الذي يمكن تشغيله في موفر الاستضافة المجاني OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت
برنامج:
اسم
الشكل - تحديد وبناء تكوينات البرنامج من إصدارات الكائنات المصدر
موجز
شكل
[ -f <وصف ملف> ]
[ -R <version اختيار القاعدة> ] [ -V <variant الاسم> ]
[ -صدى صوت <macro الاسم> ] [ -فرض ] [ -إعادة بناء ]
[ - dDehiknprs ]
[ -bct ] [ -مساعدة ] [ -نومسج ] [ -novclass ] [ -الإصدار ] [ -xpoff ] [ -xpon ]
[ target1 target2 ] [ ماكرو=قيمة ] [ ماكرو+=قيمة ]
الوصف
يسمح الشكل بتجميع كائنات المصدر التي تكون إما ملفات عادية أو ملفات
كائن المصدر الإصدارات في قاعدة كائن إصدار ShapeTools. بشكل أعم، الشكل
تنتج مجموعة من مستمد الأجسام ("الأهداف") من الإصدارات المختارة بشكل مناسب من
كائنات المصدر المقابلة وفقًا لوصف التبعيات بين
أشياء. يتتبع الشكل المعلمات ذات الصلة بالتجميعات (الإصدارات المصدر،
إصدارات المترجم، ومفاتيح المترجم، وما إلى ذلك) وبالتالي توفر بنية آمنة وفعالة
الات.
عندما يقوم الشكل بتجميع الكائنات المصدر، فإنه يقوم بتخزين الكائنات المشتقة الناتجة معًا
معلمات الترجمة الفعالة في ملفها مستمد موضوع مخبأ. قبل الاشتقاق
بدأت بالفعل عملية الكائن المطلوب، ويحاول الشكل العثور على كائن موجود
كائن مشتق يطابق متطلبات الهدف، في ذاكرة التخزين المؤقت للكائن المشتق.
يسمح التخزين المؤقت واستعادة الكائنات المشتقة من الإصدارات غير القابلة للتغيير
المطورين للاستفادة من الإصدارات السابقة التي قام بها أعضاء الفريق الآخرون. إجمالي تكاليف التجميع في
يتم تخفيض المشاريع بشكل كبير.
عند تقديم طلب بناء، يأخذ الشكل عددًا كبيرًا من الإصدارات في الاعتبار
مخزنة لكائن. ما هي النسخة المحددة ملزم إلى اسم الكائن في
ملف الوصف، يتم تحديده بواسطة الإصدار اختيار القواعد.
يمكن للشكل إدارة بنيات الأشكال المختلفة للنظام بالتوازي. يستخدم الشكل
الإمكانات المدمجة لاختيار الإصدار الديناميكي وإعادة تعريف الماكرو الديناميكي والمشتقة
إدارة الكائنات للتعامل مع البنيات المتغيرة. كما هو الحال مع معظم - إن لم يكن كل - الكائنات و
يتم تعريف المعلمات المشاركة في البناء على أنها وحدات الماكروالشكل يوفر قدرًا كبيرًا من
المرونة من خلال السماح بتغيير بعض أو كل وحدات الماكرو ديناميكيًا، اعتمادًا على ذلك
يجب أن يتم بناء البديل. مفهوم البديل تعريف في ملف وصف الشكل
يقدم نقطة محورية واضحة لجميع التعريفات ذات الصلة بمتغير معين.
OPTIONS
-f <وصف ملف>
شكل يستخدم الوسيطة المتوفرة كاسم لملف الوصف الذي سيتم استخدامه لـ
يبني. إذا لا -f تم تحديد الخيار، ويحاول الشكل العثور على ملف الوصف ضمنه
أحد الأسماء "Shapefile" و"shapefile" و"Makefile" و"makefile" (من
من اليسار إلى اليمين). إذا لم يتم العثور على ملف عادي بأحد هذه الأسماء، ولكن
إصدارات الملفات المعنية متوفرة في قاعدة كائن الإصدار، والشكل سوف
استخدام الإصدار الأحدث. عندما يكون أكثر من واحد -f <وصف ملف> حجة
يظهر الزوج، ويقرأ الشكل كل ملف وصف على حدة. إذا كان اسم
تم تحديد ملف الوصف كـ ``-''، وسيقرأ الشكل وصف النظام منه
المدخلات القياسية. من الممكن تحديد ملف الوصف في الإصدار المنضم
تدوين، على سبيل المثال ملف الشكل[2.8] or ملف الشكل [الإصدار 4] (انظر vbind(1) لمزيد من التفاصيل
حول تدوين الإصدار المنضم).
-R <selection حكم الاسم>
ينشط قاعدة التحديد المحددة كإصدار أولي ملزم للمصدر
أشياء. إذا -R الخيار موجود، ويتم تعريف قاعدة التحديد على أنها الخيار الأول
اعتمادًا على الهدف الأول، سيستخدم الشكل قاعدة التحديد التي تم تمريرها عبر
سطر الأوامر، وتجاهل تنشيط قاعدة الاختيار الأول (والأول فقط).
داخل ملف الوصف هذا الخيار مفيد لتجاوز الافتراضي الأولي
قواعد الاختيار المحددة في ملف الوصف من سطر الأوامر.
-V <variant الاسم>
ينشط المتغير المحدد بواسطة <variant الاسم>. يمكن أن تكون هناك عدة متغيرات
يتم تنشيطه في وقت واحد من سطر الأوامر عن طريق تحديد -V خيار متعدد
مرات. ستكون كافة التعريفات المحددة للمتغيرات سارية بمجرد قراءة الشكل
تعريف المتغير المقابل في ملف الوصف.
-فرض
يفرض الشكل بناء الهدف المحدد دون قيد أو شرط، أي حتى لو أ
مناسب، كائن البناء موجود مسبقًا.
-صدى صوت <macro الاسم>
قيمة الماكرو <macro الاسم> هو مكتوب على الإخراج القياسي. هذا الخيار هو
مفيد لاستخراج المعلومات من ملف وصف النظام (على سبيل المثال، الشكل -echo
المصادر، أو النظم الفرعية لصدى الشكل)، أو للتحكم في تأثير المتغير
التنشيط.
-إعادة بناء
محاولة إعادة بناء دقيقة ل الهدف وفقا ل ملزم ترتيب خيط,
موجود في ملف اسمه .bct (انظر وصف -bct تحول).
-d تشغيل الشكل في وضع التصحيح. اطبع معلومات مفصلة حول تبعيات الكائنات
والصفات.
-D اطبع معلومات تفصيلية حول عملية ربط الإصدار وسبب الشكل
فيما يتعلق (بإعادة) بناء الأهداف، أو عمليات الاسترجاع من ذاكرة التخزين المؤقت للكائنات المشتقة. هذا
يعد التبديل مفيدًا لمعرفة الأسباب الدقيقة وراء إعادة تشكيل الشكل للهدف
(أم لا).
-e تعريفات الماكرو التي يتم استيرادها من البيئة (راجع وصف
ماكرو خاص استيراد، أدناه) تجاوز تعريفات الماكرو في ملف الوصف (by
بشكل افتراضي، يكون لتعريفات الماكرو في ملف الوصف الأسبقية على الواردات
من البيئة).
-h طباعة معلومات الاستخدام على الإخراج القياسي (هذا اختصار لـ -مساعدة
التبديل، انظر أدناه).
-i تجاهل رموز الخطأ التي ترجعها الأوامر.
-k عندما يتم إرجاع حالة خطأ غير صفرية بواسطة أمر تم استدعاؤه، يتم العمل على
تم التخلي عن الهدف الحالي ولكن الشكل يستمر مع الفروع الأخرى التي لم تفعل ذلك
تعتمد على الهدف الفاشل.
-n لا يوجد وضع التنفيذ. يقوم الشكل بطباعة الأوامر، لكنه لا ينفذها. حتى
تتم طباعة أسطر الأوامر التي تبدأ بـ @. إذا كان الأمر يحتوي على الماكرو $(MAKE).
مرجع، ومع ذلك، يتم تنفيذ هذا السطر دائمًا للسماح بالتتبع
عمليات البناء العودية.
-p اطبع المجموعة الكاملة من تعريفات الماكرو وأوصاف الأهداف والقاعدة
التعاريف، على التوالي.
-r لا تستخدم القواعد الضمنية المضمنة في الشكل. القواعد الضمنية المحددة في
يبقى ملف الوصف ساري المفعول.
-s تشغيل في الوضع الصامت. لا يقوم الشكل بطباعة الأوامر قبل تنفيذها.
-bct سجل البناء في ملزم ترتيب خيط ملف. موضوع تكوين الشكل
يحتوي على تعريفات دقيقة لجميع الإصدارات المصدر، وتبعياتها، و
الأدوات المعنية والخيارات ذات الصلة التي كانت سارية للبناء. ال
مؤشر ترابط التكوين لهدف المستوى الأعلى الذي تم إنتاجه (الهدف الأول في
الوصف، أو الهدف المطلوب من سطر الأوامر) يتم تخزينه في ملف
عين .bct. يمكن استخدام سلاسل التكوين المرتبطة كمدخل لإعادة البناء
(انظر الخيار -إعادة بناء، فوق). إذا كان سياق الإصدار المصدر لـ bct-build هو
غير آمن، سوف يسجل الشكل هذه الحقيقة في bct، ويصدر رسالة تحذير.
-مساعدة طباعة معلومات الاستخدام على الإخراج القياسي.
-نومسج قم بإيقاف تشغيل أداة التتبع MSG في قواعد اختيار الإصدار.
-novclass
تعطيل التحقق من عدم توافق المتغيرات النشطة.
-الإصدار
طباعة تعريف إصدار برنامج الشكل.
-xpoff قم بإيقاف تشغيل توسيع السمة في الإصدارات المصدر التي تم استردادها من قاعدة الكائن. بواسطة
بشكل افتراضي، يتم تشغيل توسيع السمة لجميع الكائنات المصدر الموجودة مباشرة
يتم استرجاعها من قاعدة الكائن، ويتم إيقاف تشغيلها بالنسبة للكائنات المصدر العادية
الملفات (انظر ريتريفر(1) للحصول على تفاصيل حول توسيع السمة).
-xpon تشغيل توسيع السمات لجميع الكائنات المصدر، حتى في الملفات العادية. بواسطة
افتراضيًا، يتم إيقاف تشغيل توسيع السمة للكائنات المصدر العادية
الملفات، ويتم تشغيلها لجميع الكائنات المصدر التي يتم استردادها مباشرة من الملف
قاعدة الكائن.
الهدف
يمكن تمرير قائمة بأسماء الأهداف إلى الشكل عبر سطر الأوامر. إذا لم يكن هناك هدف
الواردة في سطر الأوامر، ولم يتم تعريف الهدف الخاص .DEFAULT بداخله
في ملف الوصف، يحاول الشكل إنتاج الهدف الأول المحدد في ملف
ملف الوصف.
<macro تعريف>
من الممكن تحديد أو تعديل وحدات الماكرو في ملف الوصف من الأمر
خط. وحدات الماكرو التي تم تعريفها بهذه الطريقة لها الأسبقية على كافة التعريفات الأخرى.
تحتوي تعريفات الماكرو في سطر الأوامر على أحد النموذجين:
الاسم = القيمة
و
NAME + = VALUE
مع اسم كونها كلمة و VALUE سلسلة تعسفية. لو VALUE يحتوي على مساحة بيضاء، جعل
بالتأكيد أن أقتبس ذلك. النموذج الأول من مجموعات تعريفات الماكرو لسطر الأوامر اسم إلى
الاستبدال VALUE. إذا VALUE فارغاً، تتم إعادة تعيين الماكرو. النموذج الثاني ملحق VALUE
مع شخصية فضائية رائدة ل تيار الاستبدال of اسم. الحالي
يمكن تعريف الاستبدال في ملف الوصف، أو من خلال إعداد سابق على
سطر الأوامر. للحصول على تفاصيل حول دلالات تعريفات وبدائل الماكرو، راجع
الأقسام المعنية أدناه.
الوصف FILES
يتم التحكم في تشغيل الشكل من خلال ملف وصف النظام (عادةً ما يكون ملف ماكيفيلي)
التي توفر معلومات هيكلية حول النظام المراد إدارته. غير ذلك جعل(1),
الشكل يعمل على أعلى أتفس (Atأشاد Fالصورة System)، وهو مستودع للكائنات التي تم إصدارها،
بدلا من الملفات العادية. وبالتالي، فإن ملفات وصف الشكل الأصلية (تسمى عادةً بحلقات)
قواعد اختيار إصدار الميزة والتعريفات المتنوعة بالإضافة إلى ملف Makefile القياسي
قواعد التبعية. يعد ملف وصف الشكل امتدادًا متوافقًا مع جعل(1)
ملف الوصف، Makefile. اتفاقية هيكلية مفيدة لوصف الشكل
الملفات هي الحفاظ على Makefile وShapefile بالتوازي. الشكل الحقيقي فقط
يتم الاحتفاظ بالبنيات (مثل قواعد اختيار الإصدار أو تعريفات المتغيرات).
بحلقات، بينما يتم الاحتفاظ بالجزء الأكبر من تعريفات القاعدة والماكرو المستهدفة ماكيفيلي.
يجب أن يكون ملف Makefile شامل in بحلقات (انظر وصف تتضمن التوجيه أدناه).
تتمتع اتفاقية الهيكلة هذه بميزة أن البرامج التي تم تطويرها باستخدام
يمكن شحن دعم نظام ShapeTools كتوزيع مصدر إلى المواقع التي لا تفعل ذلك
استخدام أدوات الشكل.
على الرغم من أن الشكل متوافق إلى حد كبير مع برنامج التصنيع الأصلي، إلا أنه ينبغي أن يكون كذلك
لاحظ أن العديد من الامتدادات الشائعة لبرنامج التصنيع الأصلي، مثل GNU Make أو
صنع الشمس، توفير الميزات ليست حاضر في الشكل. راجع قسم المعروف
عدم التوافق أدناه.
يوفر ملف الوصف قاعدة معلومات مركزية مثالية لجميع أنواع المنتجات
التعاريف ذات الصلة. الشكل يشجع على تطوير مجموعة من (مشروع- أو
اصطلاحات خاصة بالمؤسسة) لوصف النظام، وتوفر طريقة بسيطة لذلك
استخراج هذه المعلومات لاستخدامها من قبل أدوات أخرى (انظر -صدى صوت الخيار أعلاه). الوصف
لا يعمل بناء جملة الملف فقط على تحديد تبعيات المكونات ذات الصلة بالإنشاء
العمليات، ولكنه يسمح بتعريف عام وهرمي للمهام الموجهة نحو المنتج. ال
يرسم مفهوم التبعيات العودية خرائط مباشرة لتحسين تدريجي للمهمة
تعريفات. يمكن أن تكون هذه المهام مؤتمتة بشكل كامل أو جزئي أو غير آلي على الإطلاق حسب الاقتضاء.
وبالتالي، قد تكون بعض الأنشطة مؤتمتة وموحدة، في حين يتم أتمتة وتوحيد أنشطة أخرى
تم وصفها بشكل غير رسمي فقط من أجل توثيقها أو التفكير فيها (انظر
Shape_rms(1) على سبيل المثال).
نحوي الهيكلية
يتكون الهيكل النحوي الأساسي لملف وصف الشكل من:
التعليقات
تبدأ التعليقات بالحرف ``#'' وتمتد حتى نهاية السطر. في
ملفات الأشكال، يتم تعريف نهاية السطر على أنه سطر جديد غير قابل للإلغاء (``\'')،
أو نهاية الملف لا يمكن الهروب من حرف التعليق، ولكن يمكن اقتباسه
في علامات الاقتباس المفردة أو المزدوجة. أحرف التعليق في أسطر الأوامر للقواعد المستهدفة
يتم تجاهلها بالشكل.
تعليمات
التوجيهات هي كلمات رئيسية خاصة معروفة بالشكل. تبدأ التوجيهات في العمود 0 من أ
الخط ويمتد إلى نهاية السطر. حاليا، التوجيه الوحيد المعترف به من خلال الشكل
is
تتضمن <list of ملف الأسماء>
الماكرو التعريفات
تعريفات الماكرو لها الشكل العام:
اسم <macro تعريف الرمز> VALUE
اسم يجب أن تكون كلمة واحدة تتكون من سلسلة من أحرف الاسم. أحرف الاسم
كلها أحرف قابلة للطباعة باستثناء ما يلي:
$ # : = ; \ر \ن
رمز تعريف الماكرو هو إما ``='' أو ``+='' أو ``:=''. VALUE تعسفي
سلسلة منتهية بنهاية السطر، أو تعليق. تبدأ تعريفات الماكرو عادة في
العمود الأول من السطر، ولكن يمكن أن يسبقه بادئة الشخصيات. دقيق
يجب ألا تحتوي التعريفات على بادئة الشخصيات (انظر القسم الخاص بـ الماكرو التعريفات,
أدناه لمزيد من التفاصيل).
الماكرو مراجع حسابات
تحتوي مراجع الماكرو على أحد النماذج التالية:
$(<macro الاسم>)
${<macro الاسم>}
$<single حرف الاسم>
لا يمكن الهروب من عامل استبدال الماكرو (``$'')، ولكن يمكن تمثيله بواسطة
الاستبدال ``$$''. يحدث استبدال الماكرو في أي مكان في ملف الوصف، باستثناء
التعليقات وأسماء الماكرو والجانب الأيسر من قاعدة اختيار الإصدار وتعريف المتغير
الرؤوس (انظر القسم التالي)، وتعريفات الفئات المختلفة (انظر القسم الخاص بـ الماكرو
بدائل، أدناه لمزيد من التفاصيل).
قوانيـن القواعد مكونة من أ حكم رأس، واختياري حكم الجسد. رأس القاعدة
يتكون من اليسار يد جانبأو المعلم حكم تعريف رمز، واختياري حق يد
جانب. يبدأ الجانب الأيسر عادةً بالعمود 0 من السطر، وقد يسبقه
من خلال القيادة الشخصيات. يجب ألا تحتوي الجوانب اليسرى من رؤوس القاعدة على
قيادة الشخصيات. يمتد الجانب الأيمن الاختياري لرأس القاعدة إلى
نهاية السطر، أو بداية نص القاعدة. تتكون هيئة القاعدة من
سطرين متتاليين يبدأان بحرف أ شخصية. جسد القاعدة هو
تم إنهاؤه بالسطر التالي الذي لا يبدأ بـ a الحرف، أو نهاية
ملف.
يتعرف الشكل على ثلاثة أنواع مختلفة من القواعد، تختلف حسب كل منها
رموز تعريف القاعدة:
·
الهدف القواعد. تحتوي القواعد المستهدفة على حرف نقطتين واحد (``:'') كقاعدة
رمز التعريف. الجانب الأيسر من رؤوس القواعد المستهدفة عبارة عن مسافة
قائمة منفصلة من الأسماء. يتكون الجانب الأيمن الاختياري من مساحة
قائمة منفصلة بالأسماء، متبوعة بقائمة اختيارية لمكونات الإنتاج
(انظر القسم الخاص الهدف قوانيـن، أدناه).
·
الإصدار اختيار القواعد. تحتوي قواعد اختيار الإصدار على رمز تعريف القاعدة
``:-''. يحتوي رأس القاعدة لقواعد اختيار الإصدار على كلمة واحدة على يساره
الجانب الأيمن، وليس الجانب الأيمن (انظر القسم الخاص بذلك التجريبية اختيار قوانيـن,
أدناه).
·
البديل التعاريف. على الرغم من أن التعريفات المختلفة - كما يوحي الاسم -
التعاريف، وليس القواعد (من وجهة نظر دلالية)، قواعدها النحوية
التمثيل هو القاعدة. التعريفات المتغيرة لها تعريف القاعدة
الرمز ``:+''. يحتوي رأس القاعدة للتعريف المتغير على كلمة واحدة
الجانب الأيسر، وليس الجانب الأيمن (انظر القسم الخاص بذلك متنوع التعريفات,
أدناه).
متنوع الفئه التعريفات
تعريفات الفئة المتغيرة لها النموذج
vclass ::= (البديل 1, البديل 2, )
(انظر القسم الخاص المتغيرات، أدناه).
لاين استمرار
إذا تم تجاوز نهاية سطر الإدخال بشرطة مائلة عكسية (``\'')، فإن السطر التالي هو
يعتبر بمثابة خط استمرار. تسلسل أحرف الخط المائل العكسي الجديد هو
تم استبداله بمساحة.
الماكرو التعريفات
تقوم تعريفات الماكرو بربط الأسماء بالسلاسل التي سيتم استبدالها أينما كان الاسم
تتم الإشارة إلى الماكرو (انظر القسم التالي). وحدات الماكرو مفيدة لكتابة قابلة للصيانة،
وملفات وصف عامة إلى حد ما. حتى المشاريع الكبيرة إلى حد ما سوف تجدها
من المفيد للغاية تحديد اصطلاحات تسمية واستخدام وحدات ماكرو معينة
في جميع أنحاء ملف وصف المنتج.
هناك ثلاثة أنواع مختلفة من تعريفات الماكرو:
الاشارات الماكرو التعريفات
يبدو تعريف الماكرو البسيط
اسم = <أي سلسلة>
يمكن أن تحتوي السلسلة المقترنة باسم الماكرو على مراجع ماكرو. إذا كان ماكرو
تم تعريفه عدة مرات في ملف الوصف، وسيكون التعريف الأخير
فعال. وحدات الماكرو المحددة في سطر الأوامر لها الأسبقية على التعريفات الخاصة بها
الماكرو في ملف الوصف.
جمعي الماكرو التعريفات
يبدو هذا النوع من تعريف الماكرو
اسم += <أي سلسلة>
يتم إلحاق السلسلة الموجودة على الجانب الأيمن من التعريف بأي قيمة موجودة
المرتبطة اسم، مفصولة بحرف مسافة. تعريفات ماكرو إضافية متعددة
متسلسلة بالترتيب الذي تظهر به في ملف الوصف. إذا كانت مادة مضافة
يحدث تعريف الماكرو في سطر الأوامر، وهي قيمة السلسلة الأخيرة المحددة في ملف
يتم إرفاق ملف الوصف بقيمة السلسلة المحددة في سطر الأوامر. المضافة
يتم إلحاق تعريفات الماكرو في ملف الوصف بقيم السلسلة المحددة في الملف
سطر الأوامر.
تقييمية الماكرو التعريفات
يتم تعريف وحدات الماكرو التقييمية بالطريقة التالية:
اسم := <أي سلسلة>
أولاً، ترتبط قيمة السلسلة بـ اسم بنفس طريقة الماكرو البسيط
تعريفات. متى اسم يتم استبداله لأول مرة، على الجانب الأيمن من
يتم تقييم التعريف، ونتيجة هذا التقييم تحل محل السلسلة الأصلية
القيمة المرتبطة اسم. وبالتالي، فإن تقييم الجانب الأيمن يحدث مرة واحدة بالضبط.
يعد هذا مفيدًا بشكل خاص إذا كانت السلسلة المحددة عبارة عن استبدال أمر (انظر التالي
الجزء).
الماكرو بدائل
استبدال الماكرو هو عملية استبدال أ الماكرو مرجع بواسطة قيمة السلسلة
مقترنة باسم ماكرو. يتم استبدال المراجع إلى وحدات الماكرو غير المحددة بفارغة
خيط. تحتوي مراجع الماكرو على أحد النماذج:
$(اسم)
${اسم}
$<أي عزباء حرف>
فيما يلي مراجع ماكرو صالحة:
$ (CFLAGS)
$7
${ملفات المصدر}
$(X)
$X
يحتوي المرجعان الأخيران على بدائل متطابقة. مرجع الماكرو
$$
سوف تحل محل علامة الدولار واحدة.
قبل استبدال مرجع الماكرو، سيتم تقييم السلسلة المرتبطة.
يتضمن تقييم قيمة السلسلة
-
استبدال كافة مراجع الماكرو في قيمة السلسلة
-
استبدال الأوامر. أي سلسلة فرعية من قيمة السلسلة المضمنة في علامات الاقتباس الخلفية (```'')
سيتم تمريره كأمر إلى الصدفة، وسيتم استبداله بمعيار الأمر
الناتج.
-
استبدال السلسلة. إذا كان مرجع الماكرو يحتوي على النموذج
$(اسم:=)
سيتم استبدال المرجع بالقيمة المقدرة لـ اسم، مع كل الأحداث
السلسلة تم استبداله بالسلسلة . وهذا مفيد بشكل خاص للمحافظة عليه
القوائم ذات الصلة، مثل مصادر CS و الأجسام على سبيل المثال، تلقائيًا:
CSOURCES := `echo *.c`
الكائنات := $(CSOURCES:.c=.o)
يستبدل الشكل مراجع الماكرو في أقرب وقت ممكن. مراجع الماكرو التي تحدث في أ
يتم استبدال تعريف الماكرو فقط عندما يتم استبدال الماكرو المحدد نفسه. دقيق
يتم استبدال المراجع الموجودة على جانب التبعيات للقواعد المستهدفة عندما تكون القاعدة
تقييمها. يتم استبدال مراجع الماكرو الموجودة على الجانب الهدف من القواعد الهدف على الفور
بعد أن يقرأ الشكل ملف الوصف، أي قبل بدء أي إنتاج. دقيق
يتم استبدال المراجع الموجودة في توجيهات التضمين عند تنفيذ التوجيه while
يقرأ الشكل ملف الوصف.
مدمج و ملصقات خاصة الهدف وحدات الماكرو
من أجل توفير معايير للقواعد الضمنية المضمنة في الشكل، هناك عدد من
يتم توفير وحدات الماكرو المحددة مسبقًا بواسطة الاتفاقية. تحتوي وحدات الماكرو هذه على قيم أولية ذات معنى
والتي يمكن تغييرها من قبل المستخدم. هناك أيضًا العديد من وحدات الماكرو التي لها معنى خاص
للشكل.
الماكرو الهدف في البداية قيمنا تعليق
@ الاسم الكامل للتيار تختص
الهدف
؟ قائمة التبعيات المستهدفة تختص
<اسم الهدف الأول تختص
التبعية
* البادئة المشتركة حسب الهدف تختص
وأسماء الملفات التابعة
# معرف الإصدار المنضم للتيار تختص
التبعية
$ الحرف ``$'' $
+ اسم الكائن المراد ربطه تختص
إلى الإصدار (قواعد الاختيار
فقط!)
AS برنامج للقيام بالتجميع بشكل تقليدي
أعلام ASFLAGS للمجمع تقليدي
برنامج CC لتجميع C cc التقليدية
برامج
علامات CFLAGS لمترجم C تقليدي
برنامج FC لتجميع فورتران f77 التقليدية
برامج
أعلام FFLAGS لمترجم فورتران تقليدي
HOSTTYPE البنية المضيفة لـ تختص
الكمبيوتر الذي يدير الشكل.
قيمة هذا الماكرو هي
يستخدمها الشكل للبناء
سمة مفتاح الاشتقاق
للكائنات المشتقة
استيراد قائمة متغيرات البيئة تختص
التي سيتم استيرادها كما
تعريفات الماكرو
برنامج LD لربط البرامج التقليدية
علامات LDFLAGS للرابط تقليدي
برنامج LEX لتحويل قواعد Lex إلى لغة تقليدية
في برامج C أو Ratfor
أعلام LFLAGS للمحلل المعجمي تقليدي
ليكس
LOGNAME الاسم أو معرف الشبكة الموجود أسفل تختص
الذي يملكه المستخدم
تم تسجيل الدخول إلى عملية الشكل
برنامج M2C لتجميع Modula2 m2cconventional
برامج
علامات M2FLAGS للمترجم Modula2 تقليدي
اجعل سطر الأوامر به الشكل $(MAKEFLAGS) مميزًا
تم استدعاء الشكل.
يستخدم هذا الماكرو ل
يدعو العودية إلى الشكل
MAKEFLAGS أعلام سطر الأوامر ذات الصلة <defined تبدأ منتختص
للمكالمات العودية للشكل أمر خط>
برنامج كمبيوتر لتجميع جهاز كمبيوتر باسكال التقليدية
برامج
علامات PFLAGS لمترجم باسكال تقليدي
أعلام RFLAGS لمترجم فورتران تقليدي
لبرامج راتفور
SHAPEPID معرف العملية لـ تختص
تشغيل برنامج الشكل
SHAPEVERSION معرف إصدار theshape_CM-4.4special
برنامج الشكل (أو أعلى)
SHELL معالج الأوامر لـ /bin/shspecial
أمر القاعدة الهدف
خطوط. الأمر المشار إليه
يجب أن يكون المعالج قادرا على
تأخذ أوامرها من
الإدخال القياسي (انظر القسم
on أمر ,
أدناه)
VPATH ملحق مسار البحث لـ تختص
توطين مكونات المصدر
برنامج YACC لتحويل قواعد Yacc إلى yacc التقليدية
في برامج C
أعلام YFLAGS لـ yacc تقليدي
vpath ملحق مسار البحث الديناميكي تختص
لمتغيرات مكونات المصدر
وظيفة وحدات الماكرو للأغراض الخاصة هوستيب, استيراد, جعل, VPATHو vpath .
الموضحة في الأقسام الخاصة بالتشغيل والمتغيرات أدناه.
الهدف قوانيـن
تحدد قاعدة الهدف كيف وتحت أي ظروف يتم اشتقاق الهدف من مجموعة من
كائنات المصدر و/أو أهداف أخرى. الهدف هو الاسم الذي يمكن أن يشير إلى ملف ولكنه يحتاج
عدم القيام بذلك. القواعد المستهدفة لها التنسيق التالي:
... : [ ملزمة>] [+ ...] [ ...] \
[: ...] [; ]
\ ر [ ]
رأس القاعدة المستهدفة (انظر نحوي الهيكلية، أعلاه) يتكون من قائمة
الأهداف، تم إنهاؤها بنقطتين، متبوعة بقائمة اختيارية من التبعيات، وعلى
قائمة اختيارية من إنتاج المكونات، تبدأ بعد حرف النقطتين الثاني. ال
يتم إنهاء رأس القاعدة بسطر جديد أو فاصلة منقوطة، وتليها القاعدة الاختيارية
جسم. تتكون هيئة القاعدة من أمر خطوط التي يتم تنفيذها عندما يحتاج الهدف إلى ذلك
إعادة اشتقاق. قد يتبع سطر الأوامر الأول مباشرة الفاصلة المنقوطة التي تنتهي
رأس القاعدة. يجب أن تبدأ أسطر الأوامر اللاحقة بـ a شخصية. الهدف
يتم إنهاء نص القاعدة بالسطر الأول الذي لا يبدأ بـ a ، أو حتى النهاية
من الملف.
الأهداف
عندما تظهر أهداف متعددة على الجانب الأيسر من رأس القاعدة، والاشتقاق
يجب أن تبدأ العملية، وسيستمد الشكل جميع الأهداف في جولة واحدة.
تبعيات
يتحقق الشكل من تبعيات الهدف من اليسار إلى اليمين. يتم فحص التبعية الأولى
ما إذا كان هو اسم قاعدة اختيار الإصدار. إذا كان الأمر كذلك، فإن الشكل يعين التحديد
القاعدة نشطة (تتجاوز جميع عمليات تنشيط قاعدة التحديد السابقة)، وتنتقل إلى القاعدة التالية
الاعتماد. بعد ذلك، يتحقق الشكل مما إذا كانت التبعية عبارة عن تنشيط متغير. إذا
تبدأ التبعية بحرف ``+'' متبوعًا باسم المتغير، المتغير هو
تم تفعيله (راجع القسم الخاص بـ المتغيرات، أقل). يستمر الشكل في التحقق من المتغير
التنشيطات حتى يتم العثور على التبعية الأولى التي لا تمثل تنشيطًا مختلفًا. التالي،
يستمر الشكل من خلال قائمة التبعيات المتبقية، و يربط (أو المشتقات) كل من
لهم حسب الضرورة، وإجراء اجتياز أولي عميق للرسم البياني للتبعية (انظر الشكل
القسم OPERATION، أدناه).
الإنتــاج المكونات
بعد ربط جميع التبعيات، يبني الشكل استنتاج مفتاح ل
هدف. مفتاح الاشتقاق هو سمة تحدد مجموعة كاملة من المعلمات
التي تحدد ما إذا كان الهدف بحاجة إلى إعادة البناء. إلى جانب جميع التبعيات المرتبطة، فإن
يحتوي مفتاح الاشتقاق على إنتاج المكونات التي تم تحديدها في القاعدة الهدف
header. مكونات الإنتاج عادة ما تكون تعريفات كاملة لوحدات الماكرو الموجودة
المشار إليها في سطور الأوامر الخاصة بنص القاعدة. وبالتالي، إصدارات الأداة ومفاتيح التبديل
يمكن جعل التأثير على تشغيل الأداة جزءًا من معلمات الاشتقاق لـ a
هدف. من أجل تضمين تعريفات الماكرو في مفتاح الاشتقاق للهدف، يجب استخدام
إشارة خاصة
+(NAME1) +(NAME2)
يجب أن يحدث بدلا من مكونات الإنتاج.
أمر خطوط
عندما يخلص الشكل إلى أن الهدف يحتاج إلى (إعادة) اشتقاقه، فإن الأوامر الموجودة في الهدف
يتم تنفيذ هيئة القاعدة. يتكون نص القاعدة من خطوط متتالية يتم التعامل معها على أنها
أوامر منفصلة. يتم تقييم كل سطر أوامر كما هو موضح في القسم الخاص بذلك الماكرو
الاستبدالأعلاه وتمريرها إلى مترجم الأوامر المحدد بواسطة الماكرو SHELL.
يتم تنفيذ كل سطر أوامر كعملية منفصلة. إذا كانت هناك حاجة إلى أوامر معقدة ذلك
لا تتناسب مع سطر واحد، أو إذا كان الحمل الزائد لاستدعاءات العملية المتكررة
تم تجنبه، ويمكن توسيع سطر الأوامر المنطقي عن طريق الهروب من السطر الجديد بشرطة مائلة عكسية
شخصية (\)، والاستمرار في ذلك على السطر المادي التالي.
قد يسبق سطر الأوامر حرف خاص أو حرفان خاصان:
- يتجاهل الشكل أي رمز خطأ غير صفري يتم إرجاعه بواسطة سطر الأوامر الذي يكون الأول
الحرف هو علامة ناقص. لا يتم تمرير علامة الطرح إلى الصدفة. عندما
يقوم الأمر بإرجاع حالة إرجاع غير صفرية، وعادة ما يأخذ الشكل في الاعتبار الاشتقاق
عملية الهدف على أنها فشل وتنتهي، ما لم -i or -k مفاتيح، أو
القادم .يتجاهل الهدف الخاص ساري المفعول.
@ إذا كان الحرف الأول من الأمر هو ``@''، فلن يقوم الشكل بطباعة الأمر
قبل تنفيذها. لا يتم تمرير ``@'' إلى الصدفة.
@- إذا لم يكن الأولان الأحرف هي ``@-''، ويتجاهل الشكل إرجاعًا غير صفري
رموز، ويمنع طباعة سطر الأوامر.
إذا تم استدعاء الشكل في لا طريقة (-n)، تتم طباعة أسطر الأوامر التي تم تقييمها
الإخراج القياسي، والتي تبين ما الشكل سوف افعل إذا تم استدعاؤه بدون -n. خطوط الأوامر ذلك
تحتوي على مرجع الماكرو $ (صنع) يتم تنفيذها دائما، حتى لو -n تم تعيينه. لقد انتهى هذا
للسماح بمحاكاة البنيات العودية التي قد تمتد عبر الدلائل الفرعية. المرجع
$ (صنع) يتم استبداله باستدعاء أمر الشكل بكل سطر الأوامر ذي الصلة
مجموعة مفاتيح.
ضمن أسطر أوامر نص القاعدة، يمكن أن تكون بعض أجزاء رأس القاعدة الهدف
تمت الإشارة إليه ديناميكيًا. عندما يتم تقييم سطر الأوامر، يتم إجراء البدائل التالية
ممكن
الرقم المرجعي الاستبدال
$@ الاسم الكامل للهدف الحالي
$؟ قائمة التبعيات
$< اسم التبعية الأولى
$* البادئة المشتركة بين أسماء الملفات الحالية والتابعة
$# معرف الإصدار المنضم للتبعية الحالية
(القواعد الضمنية فقط)
ضمني قوانيـن
تأتي قواعد الهدف في الشكل بصيغتين مختلفتين: صريحة وضمنية. القواعد الضمنية
يمكن اعتبارها قوالب تحدد أنماط التبعية التي تنطبق على معظم أهداف أ
نوع معين. لهذا السبب، تسمى القواعد الضمنية أحيانًا النمط القواعد. شكل
يحول القواعد الضمنية ذات النمط القديم (على سبيل المثال .co :) إلى قواعد النمط أثناء قراءة ملف
ملف الوصف. نمط التبعية النموذجي هو، على سبيل المثال، تبعية الملفات
تحتوي على رمز كائن قابل للربط، على سبيل المثال Module.o إلى الملفات المقابلة التي تحتوي على المصدر
رمز، على سبيل المثال وحدة.ج. عملية الاشتقاق لمعظم هذه الأزواج المصدر/المشتقة هي
تطابق. بدلاً من كتابة قواعد منفصلة لجميع التبعيات المصدر/المشتقة لـ a
في النظام، من الممكن كتابة قاعدة عامة واحدة تسمى القاعدة الضمنية. ضمني
القاعدة لها التنسيق التالي:
%[. ] %[. ] : %[. ] %[. ]... \
[: ...] [; ]
\ ر [ ]
\ ر [ ]
في حين أن بنية القواعد الضمنية هي نفسها كما هو موضح أعلاه، إلا أن أسماء الأهداف
ويتم استبدال التبعيات بالأنماط المستهدفة وقوالب التبعية على التوالي.
يعمل حرف النسبة المئوية في النمط المستهدف كحرف بدل مطابق لجميع العناصر
اسم الهدف حتى اللاحقة اللاحقة الاختيارية. بالنسبة للشكل، اسم الكائن لاحقة is
تسلسل الأحرف المحاط بحرف النقطة الأخيرة (``.'') داخل الاسم،
و مبادئ السلوك الحرف الذي ينهي الاسم. المثال التالي يوضح الشكل
مفهوم اللواحق:
الاسم لاحقة
عينة.cde الرفيق
Sample.xycc
Sample_c
.sample.c c
ما يلي هو مثال للقاعدة الضمنية التي تستمد منها رمز الكائن القابل للربط
ملفات مصدر C المقابلة:
%.o : %.c : +(CC) +(CFLAGS)
\t@echo Shape - التنفيذ: $(CC) -c $(CFLAGS) $#;
\t@$(CC) $(CFLAGS) -E %.c |
sed 's;^\(# [0-9][0-9]* \"\)%.c\(\".*\)$$;e1$#\2;' > %.i;
\t@$(CC) -c $(CFLAGS) %.i;
\t@rm %.i;
ملاحظة: هذه القاعدة هي القاعدة الضمنية المضمنة في الشكل لتجميع ملفات مصدر C. المبهم
الغرض من تسلسل الأوامر هو تشفير معرف إصدار الملف الكامل في الكائن
الكود (على سبيل المثال، Sample.c[3.4] بدلاً من Sample.c). وهذا مفيد للغاية بالتزامن
مع مع -g تبديل معظم برامج التحويل البرمجي C، ومصححات الأخطاء الحساسة للإصدار، مثل
vgdb.
إذا تم اشتقاق هدف باستخدام قواعد ضمنية، فستتم مطابقة اسم الهدف مع اسم الهدف
الأنماط المستهدفة للقواعد الضمنية. إذا تطابقت القاعدة، فإن الجزء المطابق من
اسم الهدف ( صد، والمشار إليها بـ ``%'') يتم استبدالها باستمرار بجميع العناصر الأخرى
تكرارات حرف البدل في جميع أنحاء القاعدة. بمجرد الانتهاء من ذلك، الضمني
يتم التعامل مع القاعدة كقاعدة هدف صريحة.
صريح قوانيـن
تربط القواعد الصريحة أسماء الأهداف الصريحة بالتبعيات الصريحة. قواعد صريحة
تُستخدم عادةً لتحديد التبعيات التي لا يمكن تغطيتها بالقواعد الضمنية،
مثل اشتقاق برنامج قابل للتنفيذ عن طريق ربط العديد من وحدات كود الكائن. في كثير
في الحالات، يتم استخدام القواعد الصريحة لتحديد التبعيات المستهدفة التي ليست كذلك
ضمنيًا بواسطة قاعدة ضمنية (مثل تضمين التبعيات لملفات الكائنات)، بينما
يُفترض أن التبعيات "الطبيعية" موجودة. إذا كان ملف الوصف يحتوي فقط
هذا النوع من التبعيات الصريحة، والتبعيات الضمنية المحذوفة (والتبعيات القابلة للتطبيق
نص القاعدة) تتم إضافتها تلقائيًا حسب الشكل إلى القائمة الإجمالية للتبعيات المستهدفة.
مدمج ضمني قوانيـن
يوفر الشكل عددًا من قواعد الهدف الضمنية المحددة مسبقًا والتي تغطي العديد من القواعد الشائعة
مشتقات المصدر/الهدف. يسرد الجدول التالي الأنماط المستهدفة والتبعية
قوالب للقواعد الضمنية المضمنة في الشكل.
الهدف التبعية استنتاج
%.a %.c ترجمة مكتبة الأرشيف من مصدر C
%.c %.l إنشاء برامج لغة C من قواعد Lex
%.c %.y قم بإنشاء برامج لغة C من قواعد Yacc
%.o %.l ترجمة كود الكائن من قواعد Lex
%.o %.y ترجمة كود الكائن من قواعد Yacc
%.o %.s ترجمة برنامج المجمع إلى رمز الكائن
%.o %.r تجميع مصدر Ratfor
%.o %.F تجميع مصدر فورتران
%.o %.f تجميع مصدر فورتران
%.sym %.def ترجمة وحدات تعريف Modula
%.o %.mod ترجمة وحدات تنفيذ Modula
%.o %.p ترجمة مصدر باسكال
%.o %.c ترجمة مصدر C
% %.sh قم بإنشاء برنامج قابل للتنفيذ من برنامج shell-script
% %.r قم ببناء برنامج قابل للتنفيذ من مصدر Ratfor
% %.F قم ببناء برنامج قابل للتنفيذ من مصدر Fortran
% %.f قم ببناء برنامج قابل للتنفيذ من مصدر Fortran
% %.p بناء برنامج قابل للتنفيذ من مصدر باسكال
% %.mod قم ببناء برنامج قابل للتنفيذ من مصدر Modula
% %.c إنشاء برنامج قابل للتنفيذ من مصدر C
للحصول على تعريف كامل للقواعد الضمنية المضمنة في الشكل، قم بتشغيل Shape -p.
ملصقات خاصة الهدف الأهداف
يتم التحكم في العديد من جوانب تشغيل الشكل من خلال أهداف ذات أغراض خاصة يمكن التحكم بها
ضعه في ملف الوصف تبدأ أهداف الأغراض الخاصة حسب الاتفاقية بفترة
الشخصية، وليس لها أوامر مرتبطة بها.
الهدف الهدف
.DEFAULT: الأوامر الموجودة في نص القاعدة الخاص بـ .إفتراضي يتم تنفيذ القاعدة المستهدفة للجميع
الأهداف التي لا يمكن استخلاصها من خلال قواعد الهدف الصريحة أو الضمنية. إذا لا
يجب تنفيذ الأوامر على الإطلاق لقاعدة ولكن .إفتراضي هناك حاجة للآخرين
الأهداف، يمكن إعطاء هذه القاعدة أمرًا فارغًا (إما ``؛'' في نهاية
رأس القاعدة، أو سطر فارغ يبدأ بـ ). إذا .إفتراضي لديها
التبعيات، ولا يتم طلب أي أهداف من سطر الأوامر، هذه
يتم التعامل مع التبعيات كما لو كانت أهدافًا مطلوبة من الأمر
الخط.
.IGNORE: يتسبب في تجاهل الشكل لرموز الإرجاع غير الصفرية للأوامر التي تم استدعاؤها. مقابل
إلى -i تحول
.SILENT: تنفيذ الأمر الصامت. لا تتم طباعة أسطر الأوامر قبل التنفيذ.
ما يعادل -s تحول
.BPOOL: يتم تخزين التبعيات المرتبطة بهذا الهدف فقط في المشتق
ذاكرة التخزين المؤقت للكائن
.NOBPOOL: التبعيات المرتبطة بهذا الهدف هي ليست المخزنة في الكائن المشتق
مخبأ.
إذا كان كل من، .ببولو .نوبول يتم تعريفها، فقط مجموعة الفرق من كل من التبعية
سيتم تخزين القوائم في ذاكرة التخزين المؤقت للكائنات المشتقة.
التجريبية اختيار قوانيـن
عندما يبني الشكل هدفًا، فإنه يستخدم الإصدار اختيار القواعد لربط نسخة فريدة ل
كل اسم من الكائنات المصدر للمتطلبات الأساسية. تتكون قواعد اختيار الإصدار من الاسم،
ومجموعة مرتبطة بها فاعل القوائم في هيئة القاعدة. شكل اختيار الإصدار
القواعد هي:
[( , ،...)] :-
\ ر [ ،] (...) ، (...) ؛
\ ر [ ،] (...) ، (...) ؛
\ ر.
يتكون نص قاعدة اختيار الإصدار من سلسلة من بالبدائل، مفصوله ب
الفواصل المنقوطة. كل بديل من البدائل عبارة عن نمط اختياري، متبوعًا بفاصلة مفصولة
قائمة المسندات. يتم إنهاء قاعدة التحديد بحرف فترة. الفاصلة المنقوطة-
يشكل التسلسل المنفصل للبدائل في قاعدة اختيار الإصدار منطقيًا OR
تعبير. قائمة المسندات المفصولة بفواصل في البديل تشكل منطقية
لأي لبس التعبير.
التجريبية تجليد
ربط الإصدار هو عملية تحديد إصدار واحد بالضبط لكائن مصدر محدد
من مجموعة جميع الإصدارات المتاحة. ويقال ملزمة الإصدار ل النجاح إذا كان أحد
تنجح بدائل القاعدة. وينجح البديل إذا أدى إلى تحديد هوية الشخص
نسخة واحدة بالضبط. يقال ل فشل خلاف ذلك. عندما يربط الشكل نسخة بالاسم
للكائن المصدر، فإنه يحاول كل بديل بنمط مطابق، حتى يتم الاسم
منضم بشكل لا لبس فيه إلى الإصدار. إذا تم حذف النمط، سيتم تجربة البديل
دون قيد أو شرط.
يعد عمل قواعد اختيار الإصدار أحد أهم قواعد الشكل، بل الأكثر أهمية
الجوانب الدقيقة. من أجل توفير أساس لفهم بديهي لل
آلية قاعدة الاختيار، تم وصف مثال. القاعدة الأحدث، أدناه، يربط:
- الملفات التي تم سحبها للتعديل بواسطة المستخدم الذي يستدعي الشكل
- إصدارات الملفات التي تم تعديلها مؤخرًا (← الحالة تم الحفظ) من قبل نفس المستخدم
- أحدث إصدار مقترح (← الحالة المقترح) من الملفات التي تم تعديلها بواسطة مستخدمين آخرين،
- أو نسخة الملف من الإصدار الأخير.
LASTRELEASE := `lastrelease`# "lastrelease" يُرجع الاسم
#من الإصدار الأخير
الأحدث :-
مكافئ (الحالة، مشغول)، موجود ($+[locked_by($(LOGNAME)):]);
ge (الحالة، المحفوظة)، الحد الأقصى (mtime)،
الحد الأقصى (الإصدار)، مكافئ (المؤلف، $(LOGNAME));
ge (الحالة، المقترحة)، الحد الأقصى (mtime)،
الحد الأقصى (الإصدار)؛
مكافئ (__SymbolicName__, $(LASTRELEASE));
قطع ($_rule$: لا يمكن ربط $+ كما هو مطلوب!).
lock_by (user_id): -
الحد الأقصى (الإصدار)، المكافئ (الخزانة، $_user_id$).
للحصول على وصف أكثر تفصيلاً لبناء جملة قاعدة اختيار الإصدار ودلالاته والقائمة
من المسندات المضمنة، انظر قواعد ملزمة(7).
تفعيل of التجريبية اختيار قوانيـن
يتم استدعاء تحديد الإصدار لهدف معين عن طريق تحديد اسم الملف
قاعدة التحديد باعتبارها التبعية الأولى للهدف، أو عن طريق توفير اسم قاعدة التحديد كـ
حجة لل -R خيار. إذا لم يتم تحديد قاعدة تحديد بشكل صريح، فسيستخدم الشكل قاعدة التحديد الخاصة به
قاعدة اختيار الإصدار المضمنة التي تحاول ربط ملف عادي أو الأحدث
الإصدار إلى اسم الكائن.
المتغيرات
على المدى البديل يشير إلى نية إدارة المنتج الذي يجب أن يتوافق مع
مجموعات مختلفة من القيود الخارجية المختلفة كوحدة واحدة. بشكل مستقل عن خاص
الدلالات التي قد تكون مرتبطة بالمفهوم المتغير، يوجد عدد صغير منها
تقنيات لتنفيذ تنوع البرمجيات على المستوى الفني. هذه التقنيات هي:
مادي الفصل من المكونات المتغيرة. ويتم تحقيق ذلك من خلال الاحتفاظ بنسخ منفصلة
من المكونات في أدلة مختلفة، أو عن طريق الحفاظ على فروع محددة متغيرة في
أنظمة التحكم في الإصدار
مصدر المعالجة المسبقة من المكونات المتغيرة. مع هذه التقنية، متغيرات منطقية متعددة
يتم الاحتفاظ بالمكون المصدر في ملف واحد يحتوي على المعالج المسبق
تعليمات. قبل أن يتم الوصول إلى متغير معين، يجب على المعالج الأولي استخراجه
من المصدر المشترك . ومن الأمثلة الشائعة على هذه التقنية شرطي مجموعة,
يتم التحكم فيها بواسطة تعليمات #if و #ifdef ضمن مجال برمجة C/C++؛
تركيب اختلاف من متغيرات المنتج المعقدة. تعالج هذه التقنية الحالة عندما
تتكون المتغيرات المختلفة لمنتج معقد (مثل البرنامج) من مختلف
مجموعات من المكونات
استنتاج اختلاف (أو الاختلاف في العملية) الذي ينتج أشكالًا مختلفة من
الكائنات المشتقة من نفس مجموعة المصادر عن طريق تعديل معلمات الاشتقاق
عملية. والمثال النموذجي لهذه الحالة هو التجميع المتقاطع لنفس المصادر
منصات مستهدفة مختلفة، أو أدوات التعليمات البرمجية لأغراض مختلفة، مثل
التصحيح أو الاختبار أو التنميط أو التحسين.
اعتمادا على الاحتياجات الخاصة للمشروع، قد تكون كل هذه التقنيات موجودة
الاستخدام المتزامن، ويمكن أن يحدث مختلطًا حسب الاقتضاء. الشكل يسمح بالارتباط
أسماء المتغيرات المنطقية مع مجموعة من التعريفات التي تتحكم في كل ما ذكر أعلاه
التقنيات، مما يجعل من الممكن طلب تصميمات لمتغيرات نظام معينة (و
مجموعات من المتغيرات المتوافقة) دون الحاجة إلى القلق بشأن كيفية عمل هذه المتغيرات
تتحقق من الناحية الفنية.
متنوع التعريفات
الشكل يستمد مرونته من الاستخدام الماكرو الاستبدال في ملف الوصف
حيثما كان ذلك ممكنا. تعريفات متغيرات الشكل هي في الأساس مجموعات من تعريفات الماكرو
والتي تصبح سارية المفعول عند تنشيط المتغير للبناء. تعريف متغير لديه
التنسيق التالي:
:+
\ ر الاسم1>=
عند تنشيط متغير، تصبح تعريفات الماكرو المرتبطة بالمتغير
فعال. أي تعريف سابق للماكرو تم إجراؤه في ملف الوصف، أو في ملف
يتم استبدال سطر الأوامر باستبدال الماكرو المتغير. إذا تم تعريف الماكرو في
العديد من المتغيرات التي يتم تنشيطها معًا، يتم ربط القيم المعنية.
مكان بدنيا مستقل متنوع مصدر الأجسام
يوفر الشكل ماكرو خاص، vpath، والمقصود استخدامه في التعريفات المتغيرة.
إنّ كافة أنواع عهود الـ vpath يحدد الماكرو أسبقية البحث في الشكل عندما تكون أرشيفات الإصدار المصدر
تقع. لو vpath غير فارغ، ويحاول الشكل العثور على أي كائن مصدر مرجعي في ملف
أدلة vpath أولاً. إذا حددت عدة متغيرات نشطة vpath، فسيتم البحث عن البديل
يتم سلسلة المسار والبحث من اليمين إلى اليسار، أي البديل الأخير الذي كان
التنشيط له الأسبقية. فقط في حالة عدم إمكانية العثور على مكون المصدر المشار إليه في أي منها
في دلائل vpath، يتم البحث في الدليل الحالي. إذا كان الكائن المصدر
تم العثور عليه، وسيكون ملزمًا بقاعدة اختيار الإصدار الحالي، وسيكون مؤقتًا
المثبتة في دليل البناء. وهذا يعني أن المكونات التي يتم الاحتفاظ بها في ملف
يتم نقل الدليل الفرعي vpath مؤقتًا إلى الدليل الرئيسي. وبالتالي، فهو ليس كذلك
من الضروري إجراء أي إشارة إلى مسار الدليل الفرعي vpath في القواعد الهدف.
متنوع تفعيل
عندما يتم تكوين المنتج وإنشائه، يتم عادةً تنشيط المتغيرات من خلال توفير ملف
اسم متغير كوسيطة لـ -V خيارات.
يمكن أيضًا تنشيط المتغيرات لهدف معين عن طريق تحديد البادئة ``+'' المعنية
أسماء المتغيرات باعتبارها تبعيات (انظر القسم الخاص بقواعد الهدف أعلاه). التنشيط البديل
للهدف يجب أن يحدث قبل أي اعتماد كائن حقيقي على خط التبعية، و
بعد تفعيل قاعدة اختيار الإصدار الاختياري.
متنوع الفئه التعريفات
بدافع متنوع فئة التعاريفيقدم الشكل بنية تسمح بالتعريف
تتعارض المتغيرات، أي المتغيرات التي لا يمكن تفعيلها في وقت واحد. شكل
تعريفات الفئة المتغيرة لها التنسيق التالي:
vclass ::= ( , ...)
يمكن أن يحدث نفس اسم المتغير في تعريفات فئة متغيرة متعددة. إذا كان الجمع
يتم طلب المتغيرات مع أي اسمين متغيرين عضوين في نفس المتغير
فئة، سيصدر الشكل رسالة خطأ، وينتهي. يمكن التحقق من فئات البديل
يتم تعطيله عن طريق تحديد -novclass قم بالتبديل في سطر الأوامر.
ملاحظة: يجب أن تظهر تعريفات الفئات المتغيرة في ملف الوصف قبل أي البديل
التعريف المشار إليه في فئة البديل. الفئات المتغيرة التي تم تعريفها بعد
لا يمكن للمتغيرات المشار إليها فرض الاستبعاد المتبادل للمتغيرات غير المتوافقة.
An مثال
يوضح المثال التالي استخدام التعريفات المتغيرة والمتغيرة
الطبقات:
مترجم vclass ::= (gnu,prop)
جنو:+
CC = دول مجلس التعاون الخليجي -Wall
الأمثل = -O2 -الوظائف المضمنة
تصحيح = -ز -g3
الملف الشخصي = -pg -a
STDC = -ansi
الدعامة:+
CC = سم مكعب
الأمثل = +O3
التصحيح = -g -z +Y
الملف الشخصي = -G
ستدك = -أأ
جودة vclass ::= (التصحيح، الملف الشخصي، التحسين)
التصحيح:+
VARCFLAGS = $(تصحيح)
الملف الشخصي:+
VARCFLAGS = $(الملف الشخصي)
تحسين:+
VARCFLAGS = $(تحسين)
CFLAGS += $(VARCFLAGS)
إذا كان المتغير يتطلب تعديل وحدات الماكرو ذات المعنى المحدد مسبقًا، فإنه يكون كذلك في بعض الأحيان
فكرة جيدة ليست لإعادة تعريف الماكرو نفسه في قسم المتغير. في مثل هذه الحالة هو عليه
من الممكن زيادة قيمة ماكرو موجودة باستخدام تعريف الماكرو الإضافي للشكل
المنشأة، وماكرو من تعريف المتغير المحدد لهذا الغرض (على سبيل المثال VARCFLAGS
في المثال أعلاه).
OPERATION
عند استدعائه، يقوم الشكل أولاً بتحليل سطر الأوامر. يسجل الشكل أسماء المتغيرات
ليتم تفعيلها من سطر الأوامر عبر -V خيار. بعد ذلك، يقوم الشكل بتهيئة
وحدات الماكرو المضمنة والخاصة. كما تتم تهيئة قواعد الاشتقاق المضمنة للشكل.
القراءة القادم الوصف قم بتقديم
بعد ذلك، تصبح جميع تعريفات الماكرو التي تم إجراؤها في سطر الأوامر فعالة. الشكل إذن
يحدد موقع ويفتح ملف الوصف الخاص به. إذا لم يتم تحديد ملف وصف كوسيطة لـ
القادم -f الخيار، الشكل يحاول العثور على أحد الملفات بحلقات, بحلقات, ماكيفيلي أو
MAKEFILE. لكل من هذه الأسماء، يحاول الشكل العثور على ملف عادي أولاً، وإذا لم يكن الأمر كذلك
يوجد مثل هذا الملف، للعثور على أحدث إصدار من هذا الملف في عنصر تحكم الإصدار
أرشيف. إذا لم يتم العثور على مثل هذا الإصدار، فسيحاول الشكل الاسم التالي.
عندما يقرأ الشكل ملف الوصف، فإنه يجمع كافة تعريفات الماكرو، ويقوم بإنشائها
يسري مفعوله على الفور، ما لم يتم تعريف ماكرو يحمل نفس الاسم في الأمر
خط. إذا كان الماكرو الخاص استيراد تمت مواجهته، ومتغيرات البيئة المدرجة هي
تم تعريفها على أنها وحدات ماكرو. في حالة حدوث وحدات ماكرو بنفس اسم متغير البيئة المستورد
في ملف الوصف، له الأسبقية على التعريف من البيئة،
ما لم يكن -e التبديل ساري المفعول.
عندما يقرأ الشكل تتضمن التوجيه، يقوم بتقييم بقية السطر (أي
الأحرف التي تتبع التوجيه مباشرة)، ويفسر كل كلمة على أنها اسم
ملف للقراءة. يرتبط كل اسم من أسماء الملفات إما بملف عادي أو بالأكثر
النسخة الأخيرة من الملف. يفتح الشكل كل ملف من الملفات المضمنة، ويعلق قراءة الملف
ملف الوصف الحالي، ويستمر في قراءة محتويات الملف (الملفات) المضمنة،
قبل أن يستأنف قراءة ملف التحكم الأصلي. إذا كانت أسماء الملفات متعددة
المحدد في توجيه التضمين، يقرأ الشكل كل ملف على حدة، بدءًا من
أقصى اليسار، وينتهي باسم الملف الموجود في أقصى اليمين. إذا كان الملف المضمن لا يمكن أن يكون
مفتوح، يصدر الشكل تحذيرًا.
بينما يقرأ الشكل ملفات الوصف الخاصة به، فإن قواعد اختيار الإصدار والقواعد المستهدفة هي
جمع. هم انهم تعريف فقط بعد انتهاء الشكل من قراءة ملف الوصف.
تصبح تعريفات الفئات الكلية والمتغيرة والمتغيرة فعالة بمجرد حدوثها
تم الاعتراف بها.
إنّ كافة أنواع عهود الـ البناء طريقة عملنا
بعد قراءة ملف الوصف، يحدد الشكل الأهداف التي تم تحديدها
مطلوب. إذا تم طلب الأهداف من سطر الأوامر، فسيحاول الشكل القيام بذلك
قم ببناء كل واحد منهم، بدءًا من الهدف الموجود في أقصى اليسار ثم انتقل نحو
أقصى اليمين. إذا لم يتم طلب أي هدف من سطر الأوامر، فسيقوم الشكل بالبحث في
ملف وصف لهدف اسمه .إفتراضي. إذا كان هذا الهدف موجودا، وهناك أي
التبعيات المرتبطة به، سيحاول الشكل بناء كل من هذه التبعيات،
من اليسار الى اليمين. إذا لا .إفتراضي تم تعريف قاعدة الهدف في ملف الوصف،
سيحاول الشكل بناء أول الهدف تعريف in القادم وصف ملف.
عندما يبني الشكل هدفًا، فإنه يتم على النحو التالي:
1)
تحديد أسماء الكائنات المصدر لهدف معين عن طريق اجتياز
الرسم البياني للتبعية، باستخدام القواعد المستهدفة المضمنة والتي يوفرها المستخدم. الرسم البياني التبعية
يتم اجتياز العمق أولاً. يتم تسجيل معرفات جميع القواعد المطبقة.
2)
لكل كائن مصدر مطلوب، حدد موقع أرشيف الإصدار المصدر في المستودع.
تحديد موقع أرشيفات الإصدار المصدر يأخذ التيار vpath داخل الحساب.
3)
ربط كل اسم من أسماء الكائنات المصدر بإصدار مناسب كما هو ضمني في
قاعدة اختيار الإصدار النشط حاليًا. سجل معرف كل تبعية منضمة. اذا كان
التبعية هي في حد ذاتها كائن مشتق، استخدمها مخبأ مفتاح كمعرف.
4)
بناء استنتاج مفتاح للهدف الحالي من اسم الهدف و
السجلات الناتجة عن الخطوتين 1) و3).
5)
ابحث في ذاكرة التخزين المؤقت للكائن المشتق عن كائن له مفتاح اشتقاق مطابق له
المفتاح الذي تم إنشاؤه في الخطوة 4).
6a)
إذا تم العثور على كائن مشتق مناسب، فسيتم تثبيت نسخة منه في البناء
الدليل، وليس استخلاصه من مصادره.
xnumxb)
إذا لم يتم العثور على كائن مشتق مناسب، يتم إنشاؤه عن طريق استخلاصه منه
القطع. يتم وضع الكائن المشتق الناتج في ذاكرة التخزين المؤقت للكائن المشتق، و
المرتبطة بمفتاح الاشتقاق الناتج عن الخطوة 4).
الأهداف التي تحتوي على قائمة فارغة من التبعيات - وبالتالي مفتاح اشتقاق فارغ - موجودة دائمًا
(إعادة) مشتقة.
عندما يحدد الشكل تبعيات الهدف المطلوب، فإنه يفعل ذلك عن طريق التقييم
إما قواعد الهدف الصريحة، أو من خلال تطبيق قواعد ضمنية - ربما مدمجة فيها. لو
تحدد قواعد الهدف الصريحة تبعيات الكائن ولكن لا يوجد برنامج نصي للاشتقاق في القاعدة
body، سيحاول الشكل توفير نص اشتقاق افتراضي مناسب. متى
عند البحث عن مثل هذا البرنامج النصي للاشتقاق الافتراضي، يحاول الشكل العثور على صيغة ضمنية قابلة للتطبيق
قواعد الهدف الحالي. تعتبر القاعدة الضمنية قابلة للتطبيق، إذا كانت تحتوي على
الهدف الحالي في قائمة الأهداف الخاصة به (بعد استبدال النمط)، وكل ذلك - صريح،
وضمنا - التبعيات موجودة. إذا لم يتم العثور على قاعدة ضمنية قابلة للتطبيق، فشكل
يبحث عن .إفتراضي قاعدة الهدف. إذا كانت هذه القاعدة موجودة، وإذا كان لها ارتباط بها
البرنامج النصي للاشتقاق في نص القاعدة الخاص به، سيتم توفير هذا البرنامج النصي كاشتقاق افتراضي
النصي. إذا لم يؤدي أي من الاحتمالين إلى نص اشتقاق افتراضي، فشكل
استسلم.
مستمد هدف Caching
قبل بدء عملية الاشتقاق للهدف المطلوب، تتم محاولة العثور على
كائن مشتق مناسب في ذاكرة التخزين المؤقت للكائن المشتق الذي يطابق الخصائص المطلوبة.
يعتمد الشكل على استنتاج مفتاح مفهوم الكائنات المستهدفة. مفتاح الاشتقاق هو
تم إنشاؤها وفقًا للخوارزمية الموضحة أعلاه. المعلمات ذات الصلة التي تدخل
مفتاح الاشتقاق هو الإدارية of التبعية IDSأطلقت حملة الهدف حكم idأطلقت حملة الإدارية of
إنتاج المكوناتأطلقت حملة نساعدك في بناء المنصة (عادة ما يتم تعريفه بواسطة الماكرو هوستيب؛ اذا هذا
لم يتم تعريف الماكرو، ويأخذ الشكل معرف المضيف كمنصة بناء)، و السمة
توسع الحالة لكل كائن المصدر. عندما يتم اشتقاق كائن ما، يقوم الشكل بتخزينه
في ذاكرة التخزين المؤقت للكائنات المشتقة، ووضع علامة عليها باستخدام سمة مفتاح الاشتقاق. ل
تتبع تفصيلي للتعامل مع ذاكرة التخزين المؤقت للكائن المشتق للشكل، واستخدام مفاتيح الاشتقاق،
تشغيل الشكل مع -D التبديل.
أمر التنفيذ
عندما يحتاج الهدف إلى (إعادة) الاشتقاق، يقوم الشكل بتنفيذ الأوامر المرتبطة بالهدف
هدف. قبل تنفيذ الأوامر، يقوم الشكل بإعداد سياق تنفيذ الأمر. ال
يتم تثبيت كائنات الإصدار الخاصة بتبعيات الهدف كملفات عادية في الملف
نظام. إذا لزم الأمر، يقوم الشكل باسترداد الكائنات المصدر من أرشيف التحكم في الإصدار. لو
يوجد ملف باسم الكائن بالفعل في المكان الذي سيتم وضع الإصدار فيه
تم تثبيته، وسيقوم الشكل بنقله مؤقتًا إلى أتفس دليل فرعي. بعد الأمر
اكتمل البرنامج النصي، وسيستعيد الشكل الحالة الأصلية لجميع الأدلة المتأثرة.
ينفذ الشكل سطر الأوامر عن طريق بدء تشغيل البرنامج المشار إليه في ملف $(شل) ماكرو
وفتح أنبوب للعملية الناتجة. يتم كتابة سطر الأوامر إلى الأنبوب، و
وهكذا أرسل إلى $(شل) عملية الإدخال القياسية
يتم تنفيذ كل سطر من سطر الأوامر في نص القاعدة من خلال عملية منفصلة. وهكذا،
لا يتم الحفاظ على حالة تنفيذ الأوامر المنفصلة. إذا كانت هناك حاجة لأوامر متعددة
التي تعتمد على حالة تنفيذ الأوامر السابقة، يجب أن تحدث كل هذه الأوامر في ملف
سطر أوامر واحد. هذا ممكن مع خط استمرار (انظر القسم الخاص نحوي
الهيكلية، في الاعلى).
ملاحظة: يستخدم العديد من مترجمي الأوامر الحرف ``$'' كرمز خاص (عادةً مثل
مرجع متغير). تأكد من تمرير الأحرف ``$'' في الأوامر إلى $(شل)
العملية باستخدام الماكرو الخاص ``$$'' (راجع القسم الخاص بـ الماكرو مراجع حسابات، في الاعلى).
عدم التوافق
لتسهيل الهجرة منها جعل(1)، تم تصميم الشكل ليكون متوافقًا مع الأعلى
مع ملفات Makefiles. على الرغم من أن معظم ميزات ملف الوصف الخاص بالتصنيع موجودة في الشكل،
هناك عدد من حالات عدم التوافق التي قد تحتاج إلى الاهتمام بها. هناك
بالإضافة إلى عدد من الامتدادات الشائعة لبرنامج التصنيع الأصلي (مثل Sun's Make وHP's
Make وGNU Make وnmake وما إلى ذلك) التي تقدم العديد من الميزات الخاصة التي لا يدعمها
ملحقات أخرى، أو حسب الشكل. عندما يتم التخطيط للانتقال من التصميم إلى الشكل، فإنه
يجب التحقق من استخدام ملحقات خاصة أو ميزات غير متوافقة.
شرح المميزات: ليست أيد by شكل
مزدوج القولون القواعد
تربط قواعد النقطتين المزدوجتين نفس الهدف بنصوص اشتقاق مختلفة.
يعد هذا النوع من القواعد مفيدًا لدعم الاشتقاقات المختلفة للهدف اعتمادًا على الهدف
التي التبعيات التي عفا عليها الزمن. لأن الشكل يعتمد على قرارها بشأن ما إذا كان الأمر كذلك أم لا
تستمد على استنتاج مفتاح، بدلاً من مجرد تعديل الطوابع الزمنية للملفات،
هذا النوع من القواعد لا معنى له من حيث الشكل.
الأرشيف عضو الأهداف
أهداف أعضاء الأرشيف هي كائنات تعيش في ملف أرشيف (انظر ar(1)) بدلاً
من نظام الملفات. وضمن هذه المحفوظات، تتخذ قراراتها على أساس
تعديل الطوابع الزمنية للملفات المصدر وتواريخ إدخال الأرشيف. لا توجد طريقة
للشكل لمحاكاة مفهوم مفاتيح الاشتقاق لأعضاء الأرشيف.
ومع ذلك، فإن صيانة المحفوظات أمر سهل من حيث الشكل، لأن جميع البيانات يتم تجميعها
يتم الاحتفاظ بملفات الكائنات في ذاكرة التخزين المؤقت للكائنات المشتقة. إذا كان المصدر لكائن
يتم تعديل الشكل المخزن في الأرشيف، ويمكن إعادة اشتقاق هذا الكائن، و
استبدال الإدخال في الأرشيف بشكل انتقائي.
SCCS أشياء
من أجل توفير الدعم الأساسي لعمليات التطوير الموجهة نحو الفريق، قم بإجراء
يسمح باسترداد أحدث إصدار من الملفات المصدر من أرشيفات SCCS.
بسبب اصطلاح التسمية غير المناسب لملفات أرشيف إصدار SCCS، فإن هذا خاص
كان لا بد من بناء الدعم للتعامل مع هذه الأرشيفات. لأن الشكل هو
متكاملة بإحكام مع أتفس مستودع كائن الإصدار، ليست هناك حاجة ل
أي دعم خاص لـ SCCS.
ملصقات خاصة الأهداف
الشكل لا يتعرف على الأهداف الخاصة .ثمين:و ..
الهدف .PRECIOUS في Makefiles يهدف إلى منع حذف الملفات باهظة الثمن
الأهداف المتوسطة المشتقة (افتراضيًا، قم بحذف الأهداف المتوسطة).
نظرًا لأن الشكل يخزن الأهداف المتوسطة في ذاكرة التخزين المؤقت للكائنات المشتقة، فلا يوجد ذلك
الحاجة إلى ميزة .PRECIOUS. لمنع التخزين المؤقت ربما كبيرة، عديمة الفائدة
الأهداف المتوسطة، استخدم نوبول: هدف خاص (انظر القسم الخاص بـ ملصقات خاصة
الأهداف، فوق). الغرض من الهدف .SUFFIXES في Makefiles هو تقديم جديد
أنواع اللاحقة في محرك اشتقاق الصنع، وتحديد الترتيب الذي يتم به
القواعد الضمنية (لاحقة القواعد في جعل المصطلحات) يتم تطبيقها. في الشكل لاحقة جديدة
يمكن إضافة الأنواع ديناميكيًا، وذلك ببساطة عن طريق إدخال قواعد ضمنية جديدة. علاوة على ذلك،
يحتوي الشكل على خوارزمية ذكية تحدد القاعدة الضمنية القابلة للتطبيق.
شرح المميزات: مع مختلف دلالات
البيئة المتغيرات
يقوم العديد من البرامج باستيراد المجموعة الكاملة من متغيرات البيئة على هيئة ماكرو
تعريفات في عملية البناء. وهذا يمكن أن يؤدي في بعض الأحيان إلى نتائج مذهلة.
في الشكل، يتم استيراد متغيرات البيئة بشكل صريح باستخدام ملحق استيراد تختص
دقيق.
? الماكرو
في قواعد الهدف الخاصة بـ make، مرجع الماكرو الخاص $؟ يتم استبدالها بالأسماء
من أسماء ملفات التبعية التي تم تحديثها منذ أن تم تحديث الهدف الحالي
تم اشتقاقها. لأن الشكل يبني قراره بشأن ما إذا كان يجب استخلاصه من مفهوم
استنتاج مفتاح، بدلاً من مجرد طوابع زمنية لتعديل الملف، فإن ملف ? لا يمكن للماكرو
يتم تعريفها بشكل صحيح. بدلاً من ذلك، يستبدل الشكل قائمة التبعيات بأكملها
أسماء - محدثة أم لا.
استخدم الشكل عبر الإنترنت باستخدام خدمات onworks.net
