عربيالفرنسيةالإسبانية

Ad


OnWorks فافيكون

makepp_incompatbilities - عبر الإنترنت في السحابة

قم بتشغيل makepp_incompatibilities في موفر الاستضافة المجاني OnWorks عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

هذا هو الأمر makepp_incompatibilities الذي يمكن تشغيله في موفر الاستضافة المجاني OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

برنامج:

اسم


makepp_incompatibilities - حالات عدم التوافق بين makepp وGNU make

الوصف


تم تصميم Makepp ليكون أقرب ما يمكن إلى صنع GNU
(<http://www.gnu.org/software/make/manual/make.html>). أدوات جنو التلقائية
(<http://www.gnu.org/software/automake/manual/automake.html>)، كميك
(<http://www.cmake.org/>)، بريميك (http://industriousone.com/premake> وانظر الملاحظة
أدناه) أو يجب أن تكون أنظمة البناء القديمة المصنوعة يدويًا قابلة للبناء باستخدام makepp. هذا هو الحال
يمكنك إما ترحيل المشاريع دون عناء. أو إذا كنت لا ترغب في الاستمتاع بكل شيء
مزايا makepp (على سبيل المثال حتى يتمكن الآخرون من بناء مشروعك باستخدام GNU make) أثناء قيامك بذلك
الاستفادة من ميزة الموثوقية لتطويرك.

ومع ذلك، وبسبب الاختلاف في الفلسفة، فإن بعض برامج GNU أو POSIX تصنعها
(<http://pubs.opengroup.org/onlinepubs/009695399/utilities/make.html>) لا يمكن أن تكون الميزات
أيد. ولم يتم تنفيذ عدد قليل منها لأنه لم يكن لدينا الوقت. أكثر من
تعتبر الاختلافات عن GNU تقنية تمامًا ونادرًا ما تسبب مشاكل. للأسف
أصبحت الحلول البديلة لأوجه القصور في الصناعة التقليدية أكثر تعقيدًا،
ويعطون makepp وقتًا عصيبًا.

باختصار، إذا لم يتم إنشاء المنتج خارج الصندوق، فجرّب ما يلي:

makepp --no-warn makepp_simple_concatenation=1 makepp_percent_subdirs=1 \
--build-check=target_newer --قواعد الفرصة الأخيرة --no-remake-makefiles

إذا نجح ذلك، يمكنك محاولة إزالة تلك الوسائط واحدة تلو الأخرى. لكن إذا فشل ذلك،
حاول إضافة:

-تقليدي-تكراري-صنع

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

إجبار الأكثر من ذلك POSIX or جنو جعل التوافق


فيما يلي بعض إمكانيات سطر الأوامر لتشغيل العديد من أنظمة البناء القديمة
بدون تعديل. إنها تجعل makepp يحاكي سلوك GNU make بدقة.

التوافق بواسطة ال الخيار: "--build-check=target_newer"
افتراضيًا، سيحاول makepp إعادة بناء كافة الأهداف في حالة وجود أي من التبعيات
تغير منذ الإصدار الأخير، أو إذا تغير الأمر (راجع makepp_build_check لـ
تفاصيل). هذا هو عادة ما تريد. ومع ذلك، في بعض الأحيان، لا تريد الهدف
ليتم إعادة بنائه إذا تم تعديله بعيدًا عن التحكم في makepp (على سبيل المثال، عن طريق التحرير
أو عن طريق تشغيل برنامج يدويًا لإنشاء الملف). يمكنك إجبار makepp على استخدام ملف
خوارزمية الصنع التقليدية، والتي يتم إعادة بنائها فقط إذا كان أي من الأهداف أحدث من
التبعيات، وذلك عن طريق إضافة هذا الخيار إلى سطر الأوامر.

التوافق بواسطة ال الخيار: "--dont-build=config.status"
هناك حزم تحاول تكوين نفسها تلقائيًا، أو القيام بأشياء أخرى، مما يجعل gmake
يتجاهل ما لم يُطلب منه ذلك، مثل:

config.status: تكوين
./config.status --إعادة الفحص

التكوين :config.in aclocal.m4
com.autoconf

معظم الأشخاص لم يتم تثبيت "autoconf" عليهم، لذا يقومون بكل شيء بضمير حي
القواعد، كما يفعل makepp، سوف تفشل. هذا الخيار يمنع ذلك، إذا كنت تعرف ما
لا لبناء.

التوافق بواسطة ال الخيار: "--قواعد الفرصة الأخيرة"
القواعد الافتراضية (قواعد النمط التي لا تحتوي على تبعيات النمط) غير مدعومة عادةً.
يقوم Makepp بإنشاء مثيل لجميع القواعد بناءً على الملفات الموجودة، بحيث يكون على علم بكل منها
الملف الذي يمكن إنشاؤه. للأسف بهذه الطريقة لا يعرف كيفية إنشاء نموذج
القاعدة مع عدم وجود تبعية للنمط. آلية :last_chance تعالج ذلك جزئيًا.
عندما يكون هذا جيدًا بما يكفي لملفات الصنع القديمة، فإن هذا الخيار يسمح بتشغيله عالميًا.

التوافق بواسطة ال الخيار: "--لا تحذير"
هذا لا يحسن النتيجة. سوف يقوم Makepp بإعطاء رسائل تحذيرية لأشياء كثيرة
الذي يقبله يونكس التقليدي دون أن يتوان. هذا لأن هناك
طرق أفضل للقيام بها مع makepp. إذا كانت هذه التحذيرات تزعجك، فيمكنك إيقافها
مع هذا الخيار.

التوافق بواسطة ال الخيار: "--صنع عودي هجين"
غالبًا ما تُعتبر الاستدعاءات المتكررة لـ make ممارسة غير آمنة (راجع "أفضل".
نظام للبنيات الهرمية" في makepp للحصول على التفاصيل)، ولكنها شائعة للغاية في
ملفات التعريف الموجودة. يدعم Makepp التصميم العودي للتوافق مع الإصدارات السابقة؛ للجديد
makefiles، فمن الأفضل استخدام عبارة "load_makefile" أو عبارة makepp الضمنية
آلية تحميل الملف.

لكي تكون قادرًا على استخدام المستودعات للبنيات المتغيرة، وللمساعدة في جعلها متكررة
استدعاءات make أكثر أمانًا، عادةً لا يقوم makepp باستدعاء نفسه بشكل متكرر
حتى لو قلت ذلك. بدلاً من ذلك، تتواصل العملية الفرعية مع العملية الأصلية، و
يتم البناء الفعلي من خلال العملية الأصل.

يعمل هذا في معظم الحالات، لكن لا يجوز لك استدعاء عدة ملفات تكوين من نفس الملف
الدليل، على سبيل المثال، لن يعمل ما يلي:

الهدف: التبعيات
$(MAKE) -f أهداف أخرى_makefile

في هذه الحالة، لاحظ makepp أنه يقوم بتحميل ملف تعريف ثانٍ ويشكو. مع هذا الخيار
وبدلاً من ذلك، سيعود إلى الطريقة التقليدية للبناء من ملفات تكوين إضافية
عملية makepp منفصلة لكل منهما.

ملاحظة: من الناحية الفنية، لن يكون هناك مشكلة في تحميل العديد من ملفات makefiles، ولكنها عادةً ما تحتوي على
نفس أسماء الأهداف الزائفة. إن إبقاء ذلك منفصلاً يعني إعادة تصميم كاملة للماكياج
الداخلية. ومع ذلك، سيعمل هذا، لكنه ليس مكافئًا:

الهدف: التبعيات
cd subdir && $(MAKE) -fother_makefile الأهداف

التوافق بواسطة ال الخيار: "--التصنيع العودي التقليدي"
في بعض الأحيان لا يكون الخيار السابق كافيا، خاصة إذا تم استخدام الاستدعاءات العودية
خيارات متناقضة. يستخدم Makepp مجموعة واحدة فقط من الخيارات العامة، لذا فإن النسخة الفرعية ليست كذلك
يُسمح بتعديلها، لأن ذلك قد يتعلق أيضًا بملفات تعريف أخرى.

تؤدي إضافة هذا الخيار إلى سطر الأوامر إلى الآثار الجانبية غير المرغوب فيها التالية:

· لا يتم تنفيذ عمليات التنفيذ العودية داخليًا بالتوازي، حتى لو قام بذلك الوالدين.
على عكس gmake، لا يوجد تنسيق عام لعدد العمليات. هذا سوف
لا يمكن تنفيذها لأن طريقة العمل هذه ليست هدفًا تصميميًا لـ makepp.

· عمليات التصنيع العودية لا تعرف شيئًا عن المستودعات.

· تنتج كل عملية تصنيع متكررة ملف سجل خاصًا بها، ويتم استدعاؤه في الدليل
in، بدلاً من إنتاج ملف سجل واحد للإنشاء بأكمله.

· بما أن makepp عادة ما يبني أكثر من ما يراه ضروريًا، ومنذ ذلك الحين
توفر أنظمة البناء مكالمات متكررة في جميع الاتجاهات، وهذا قد يؤدي إلى ما لا نهاية
العودية. سوف يقوم Makepp بسحب الفرامل بعد 50 طلقة ويخبرك بكيفية الزيادة
هذا، في حال كان لديك حقًا مثل هذا التعشيش العميق.

حتى مع خيار "--traditional-recursive-make"، فإن متغيرات البيئة
لم يتم إعداد "MAKEOVERRIDES" و"MFLAGS"، وتم تجاهلهما، لذلك يتم إنشاء الملفات التي تعتمد على
تلك لن تنجح.

A بريميك ولدت ماكيفيلي ما هو إلا غلاف مضحك لاستدعاء فرعي في نفس الوقت
الدليل. إذا كان لديك بعض أهداف المشروع XYZ سيكون له خط مثل

@${MAKE} --no-print-directory -C . -f XYZ.make

في هذه الحالة يمكنك تجنب خيار "--traditional-recursive-make" عن طريق الاستدعاء المباشر
makepp مع ذلك "-f XYZ.make" الخيار.

التوافق بدون ال الخيار: "--الوظائف=n"
في بعض الأحيان، لن تسرد ملفات makefiles القديمة جميع التبعيات، اعتمادًا على ترتيب
التنفيذ لجعلها في الوقت المناسب. في هذه الحالة، قد يتمكن makepp من استدعاء القاعدة من قبل
وقد تم كل تبعياتها. ثم قد تكون النتائج أفضل مع كمية أقل، أو حتى لا
التنفيذ الموازي.

التوافق بواسطة ال المتغير: "makepp_simple_concatenation=1"
يعد الاستبدال بنمط Rc هو الطريقة الافتراضية التي يقوم بها makepp بإجراء استبدال المتغير في النص
السلاسل لأنها نادرًا ما تكسر ملفات التكوين القديمة وغالبًا ما تكون مفيدة في الملفات الجديدة
com.makefiles. ومع ذلك، فإنه يقدم حالات عدم توافق عرضية في استبدال
المتغيرات غير محاطة بمسافات. على سبيل المثال،

INCLUDE_PREFIX := -I/some/include/dir -I
يتضمن := $(INCLUDE_PREFIX)/other/include/dir

سيتم تعيين "INCLUDES" على "-I/some/include/dir/other/include/dir -I/other/include/dir" إذا rc-
يتم تمكين استبدال النمط، بينما يقوم GNU make بضبطه على
"-I/some/include/dir -I/other/include/dir". على سبيل المثال، عند تجميع Redis 2.6.5 فإنه يحاول القيام بذلك
قم بتشغيل "printfgcc". مثل هذا التسلسل المضحك لأمرين هو إشارة قوية إلى ذلك
هناك حاجة إلى هذا المتغير للرجوع إلى علم الدلالات.

يوجد أيضًا عدم توافق في التعامل مع المسافات البيضاء في متغير:

خالية: =
T := -o $(null) # T يحتوي على -o متبوعًا بمسافة واحدة.
OUTFILE = $(T)outfile

سيتم تعيين "OUTFILE" على "-ooutfile" إذا تم تمكين استبدال نمط rc، بينما يقوم GNU بإجراء
سوف يضبطه على "-o outfile".

تتم إزالة كل من حالات عدم التوافق هذه عن طريق تعيين "makepp_simple_concatenation"
عامل. ومع ذلك، لاحظ أنه حتى مع "makepp_simple_concatenation"، يظل makepp ثابتًا
يتعامل مع المسافات البيضاء بشكل غير متوافق في بعض المواقف:

T := -o # لا تحذف هذا التعليق.

يقوم GNU بإنشاء مجموعات "T" لتحتوي على "-o" متبوعة بمسافة، بينما يقوم makepp بإزالة
مساحة زائدة على أي حال. إذا كنت تريد المساحة الزائدة، يجب عليك تعيينها
"makepp_simple_concatenation" وقم أيضًا بتعيين "T" باستخدام التقنية التي تتضمن دمية
متغير مثل "فارغة"، كما هو موضح أعلاه.

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

التوافق بواسطة ال المتغير: "makepp_percent_subdirs=1"
بشكل افتراضي، "%" في قاعدة النمط لا يتطابق مع الدلائل. وهذا يعني أن مثل هذه القاعدة
هذه:

٪ .o:٪ .c
$ (CC) $ (CFLAGS) -c $ (إدخال) -o $ (إخراج)

لن يتم تطبيقه على ملفات مثل "../shared/xyz.c". إذا كنت تريد أن تتطابق مع الملفات الموجودة في
الدلائل الفرعية أيضًا، ثم قم بتعيين المتغير "makepp_percent_subdirs=1" في سطر الأوامر
أو بالقرب من بداية ملف تعريف.

التوافق بواسطة ال بيئة المتغير: $MAKEPP_IGNORE_OPTS
في بعض الأحيان، تمرر الاستدعاءات العودية القديمة خيارات لا يفهمها makepp.
نأمل ألا يكون هذا الخيار مهمًا، ولكنه يمنع makepp من التشغيل. مع هذا
متغير البيئة يمكنك أن تطلب من makepp تجاهل خيارات معينة بصمت. القيمة
يجب أن تكون قائمة خيارات مفصولة بمسافات، والتي يمكن أن تأتي في 4 أشكال مختلفة:

--التداول الطويل=x
خيار طويل يتوقع حجة. ويجب إعلان هذه الحقيقة من خلال المتساوين
علامة، على الرغم من أن الاستخدام الفعلي قد يتم فصله أيضًا بمسافة بيضاء، إما "--long=bla" أو
"--طويلة بلا".

--التداول الطويل
خيار طويل بدون حجة.

-sx خيار قصير يتوقع وسيطة. ويجب إعلان هذه الحقيقة بإضافة
شيء ما مباشرة بعد الخيار، على الرغم من أن الاستخدام الفعلي قد يتم فصله أيضًا
مسافة بيضاء، إما "-sbla" أو "-s bla".

-s خيار قصير بدون حجة.

على سبيل المثال، قم بتجاوز خيار makepp -R بواحد بدون وسيطة وقبول تصحيح أخطاء gmake
الخيار مع حجة:

تصدير MAKEPP_IGNORE_OPTS='-R --debug=x'

عدم التوافق أن تطلب ماكيفيلي التغييرات


· ملفات Makefiles التي تستدعي صراحة make تمنع makepp من بناء كل شيء بنفسه.
للأسف، يرتكب "ExtUtils::MakeMaker" الخاص بـ Perl الشكل الثاني من النموذجين التاليين
هذا الخطأ حتى الإصدار 6.56 (Perl 5.12.1):

عنوان فرعي:
قرص مضغوط فرعي؛ يصنع

اصنع = اصنع

· يؤدي تعيين متغير "VPATH" إلى قيمة ما إلى استدعاء "قيمة vpath %" ضمنيًا. "باث"
تتم محاكاة البيانات مع آلية المستودع. لذلك، حيث بدائل gmake
المسار إلى الملف الموجود في vpath، سيقوم makepp بدلاً من ذلك بربطه رمزيًا به
حيث تكون هناك حاجة إليها. وبالتالي فإن makepp سيوفر سلسلة غير معدلة، والتي عادة ما تكون
لا مشكلة.

الأهداف الموجودة في vpath غير مدعومة. (تعتبرها شركة Gmake إذا كانت أحدث من
تبعياتهم، ولكن إذا لم يكن الأمر كذلك، فسيتم إعادة إنشاء الهدف في الدليل الحالي
-- غير متناسق إلى حد ما.) لا يتم دعم إلغاء ضبط vpaths.

· قاعدة النمط الموجودة لاحقًا في ملف تعريفي تتجاوز القاعدة الموجودة مسبقًا.
هذا معكوس من صنع GNU.

· تختلف مجموعة القواعد الضمنية المضمنة إلى حد ما عن تلك الخاصة بـ GNU،
على الرغم من أن أسماء المتغيرات متوافقة إلى حد كبير. ينبغي للقواعد المضمنة
ترجمة برامج C/C++/Fortran بنجاح، وفي الواقع قد تكون قادرًا على تخمين
المكتبات المناسبة في بعض الحالات أيضًا. دعم Modula-2 وRatFor وغيرها من البرامج النادرة
اللغات غير موجودة عمدًا، لأنني ظللت أواجه مشكلات مع GNU
make عندما قمت عن طريق الخطأ بإعادة استخدام الامتدادات لتلك اللغات.

· يتم تجاهل بادئة الإجراء "+" بصمت.

· أعضاء الأرشيف غير مدعومين، ولا المتغيرات التلقائية المرتبطة بهم
$% و"$(%D)" و"$(%F)".

· لا يوجد دعم SCCS.

· يتم تجاهل المسافات البيضاء البادئة والزائدة في التعيينات المتغيرة (حتى لو كان
مسافة بيضاء يتبعها تعليق). لمزيد من التفاصيل حول التعامل مع المسافات البيضاء
حالات عدم التوافق، راجع "المسافات البيضاء في المتغيرات" في makepp_variables.

· Makepp لا يحاول إعادة بناء الملفات المتضمنة في عبارة "التضمين" إلا إذا
يحتوي ملف makefile على قاعدة لإنشائها قبل رؤية بيان التضمين.
(ومع ذلك، سيحاول إعادة بناء ملف التعريف نفسه.) يُستخدم هذا عادةً لـ
تتضمن المعالجة تبعيات الملف، وهي ليست مفيدة مع makepp لأنك لا تفعل ذلك
بحاجة للقيام بذلك على أي حال.

· يتم حاليًا تجاهل المتغير "SHELL" جزئيًا. يستخدم Makepp دائمًا / بن / ش
ما لم /usr/xpg4/bin/sh or /sbin/xpg4/sh تم العثور عليه أو ما لم تقم بتصدير "SHELL"
متغير في ملف makefile الخاص بك. ولكن إذا قمت بذلك، فقد لا يكون محلل الأوامر كاملاً
فهم ما يفعله أمر Shell الخاص بك. على Windows Strawberry أو ActiveState Perl
يجب عليك بدلاً من ذلك تعيين متغير SHELL الخاص بك قبل استدعاء makepp.

· لا تزال تبعيات أي شيء في Makefile تعمل، ولكنها عادة ما تكون غير ضرورية.
يُستخدم هذا عادةً لفرض إعادة البناء عند تغيير خيارات الترجمة. يعرف ماكيب
عندما تتغير أوامر البناء دون أي شيء خاص في ملف التعريف؛ يخزن
هذا على أساس كل ملف على حدة. إذا قمت بتغيير ملف makefile، فإنه يعرف بالضبط ما
الملفات تحتاج إلى إعادة تجميع.

· لا يتم حذف الملفات المتوسطة. (لأن makepp يصر على الحصول على الملف بأكمله
تكون التواريخ هي نفسها التي كانت عليها في الإصدار الأخير، ويجب أن تكون جميع الملفات المتوسطة
موجود وإلا ستتم عمليات إعادة البناء.) لا توجد حالة خاصة تُمنح لـ
الملفات الوسيطة.

· الهدف الخاص الوحيد الذي يتم دعمه هو ".PHONY" وجزئيًا ".SUFFIXES". ال
المتبقية ببساطة ingored.

على وجه التحديد، لدى GNU make الأهداف الخاصة التالية:

.اللاحقات
يتجاهل Makepp ".SUFFIXES" باستثناء الحالة الخاصة لـ ".SUFFIXES" التي لا تحتوي على أي
التبعيات، مثل هذا:

.

الذي يخبره بعدم تحميل أي من قواعده الافتراضية.

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

.يتجاهل
تم تجاهل هذا الهدف. إذا أردت تجاهل الأخطاء ضع كلمة "ignore_error"
(أو علامة الطرح) أمام الأمر الذي سيتم تجاهل حالة الخروج منه.

.صامتة
تم تجاهل هذا الهدف. إذا كنت تريد عدم تكرار الأوامر، ضع كلمة "noecho"
(أو الحرف "@") الموجود أمام الأمر الذي ليس من المفترض أن يتم تكراره،
أو استخدم الخيار "--silent" للتكوين.

.DELETE_ON_ERROR
.تصدير_ALL_VARIABLES
.NOEXPORT
.بوسيكس
.إفتراضي
هذه الأهداف غير مدعومة ويتم تجاهلها ببساطة.

· وظائف GNU "التقييم"، و"النكهة"، و"القيمة" غير مدعومة حاليًا. أنت
يمكن أن يحقق نفس الشيء مثل التقييم بطريقة أكثر مباشرة باستخدام "$[...]"
توسيع المتغير أو الوظيفة.

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

أ :: ب
&قطة ب -وا

# لاحقًا في ملف التعريف الخاص بك:
أ :: ج
&قطة ج -o >>أ

أنه بالضبط نفس كما لو كنت قد كتبت

أ : قبل الميلاد
&قطة ب -وا
&قطة ج -o >>أ

من المؤكد أن هذا ليس ما تهدف إليه قواعد النقطتين المزدوجتين، ولن يحدث ذلك دائمًا
تعمل، ولكنها تعمل مع أهداف مثل "النظيفة" أو لجميع الأشياء التي
ExtUtils::MakeMaker يضعه في ملفات makefiles الخاصة به. فلا تعول عليه في أي شيء آخر
من ملفات makefiles القديمة.

· وظيفة "$(wildcard )" لا تطابق الملفات الموجودة فحسب، بل تتطابق أيضًا مع الملفات الموجودة
لم تكن موجودة بعد، ولكن لها قاعدة رآها ماكيب في ذلك الوقت
تم تقييم الدالة "$(wildcard)".

· عبارة "التعريف" مدعومة، ولكن تم التعامل مع "@" التي تسبقها
بشكل مختلف. حاليًا في makepp، "@" أمام المتغير الذي يحتوي على أسطر متعددة
القيمة سوف تمنع فقط صدى السطر الأول. على سبيل المثال،

تحديد خطوط الصدى
& صدى السطر 1 -o $@
&صدى السطر 2 -o >>$@
com.endef

x:
@$(خطوط الصدى)

لن يمنع طباعة "&echo line2" كما يحدث في GNU؛ سوف يفعل ذلك فقط
منع طباعة "&echo line1".

· لا يدعم Makepp متغيرات البيئة التالية (لا يقوم بإعدادها،
ويتجاهلهم فقط):

التجاوزات
مفلاجس

عدم التوافق in طلب of التعبير توسع
· في makepp، يتم توسيع إجراءات القاعدة قبل ضمان كافة التبعيات
تم بناء. يمكنك التغلب على هذا عن طريق تغيير قواعد مثل هذه:

فو: شريط
genfoo < $(شريط القط شل)

لهذا:

فو: شريط
جينفو <`شريط القط`

أو هذا مما سيجعل الملف أثناء التوسيع:

فو: شريط
جينفو < $(&cat $(إنشاء شريط))

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

· على الرغم من أنني لم أر هذا مستخدمًا، إلا أن نظام GNU يسمح بما يلي:

القولون = :
أ$(القولون) ب
صدى $^

يقوم Makepp بتوسيع "$(colon)" بعد فوات الأوان لكي يعمل هذا. ومع ذلك فهو يقدم
بناء جملة "$[colon]" بديل، والذي يمكنه أن يفعل أكثر بكثير مما يفعله GNU، لأنه كذلك
توسعت في وقت مبكر جدا.

"$ (صنع)" قد تتضمن المساحات
في makepp الذي تم إلغاء تثبيته أو إذا كان النظام الأساسي لا يدعم بدء تشغيل برنامج Perl النصي
بواسطة الرقم السحري أو باستخدام "--traditional-recursive-make" سيتضمن هذا المتغير على الأقل
مساحة واحدة. هذه ليست مشكلة عند استخدامه كأمر. ولكن عند تمريره باعتباره
معلمة غير مقتبسة إلى برنامج نصي (كما يفعل نظام بناء Perl 5.14.0)، فسوف تمزقه
بصرف النظر عن المعلمات المنفصلة، ​​مما يؤدي إلى الارتباك. لذا كمعلمة فهي أكثر أمانًا
اقتبسها كـ "$(MAKE)". الذي لا يكسر التوافق مع الإصدارات السابقة.

الهدف المحدد تعيينات لا بث
تختلف متغيرات Makepp الخاصة بالهدف قليلاً عن متغيرات GNU من حيث أنها
ولا تنطبق القاعدة إلا على الملف الواحد المذكور، وليس على أي من سابقيه؛ يرى
مهام محددة الهدف.

بين قوسين or الأقواس لا عش
ينهي Makepp التعبيرات عند أول قوس أو قوس مطابق. بدلا من هذا

$(somefunction ... ( ) ...) # GNU make style

يجب عليك استخدام أي منهما

${somefunction ... ( ) ...} # جعل GNU متوافقًا
$((somefunction ... ( ) ...)) # ملحق Makepp

من المحتمل أن يتم إصلاح هذا في الإصدار 2.1، ربما اختياريًا.

قاصر نقاط
تبعيات النمط لا تتطابق مع الأهداف الزائفة
%.أ: %.ب؛ ...
$(زائفة xb): ; ... # لا يوفر طريقة لبناء xa

التعليقات لا تحتوي على خطوط استمرارية
# هذا هو \
ليس تعليقًا من سطرين

أمر خط عدم التوافق


يدعم Makepp عددًا قليلاً من خيارات سطر الأوامر الأكثر فائدة. لكن ما يلي،
غير مدعومة:

-d أو --debug
-F -
ترتبط كائنات makefile الداخلية لـ Makepp بكائنات الملفات، لذا لا يمكنها التعامل معها
ستدين.

-i
-l أو --load-average أو --max-load
-m Makepp's الخيار "-m" له علاقة باختيار طريقة التوقيع، في حين أن GNU make
يتجاهل -م.

-p أو --print-data-base
-q أو --سؤال
-R أو --no-builtin-variables
يقوم خيار Makepp "-R" بالفعل بشيء مختلف تمامًا.

-S --no-keep-going أو --stop
يقوم خيار "--stop" بإيقاف makepp (وضعه في وضع السكون) بعد تعلم جميع القواعد، لذلك أنت
يمكن مواصلة التحرير.

-t أو --touch
-w أو --print-directory
يحدث هذا تلقائيًا.

- متغيرات تحذير غير محددة

يمكن دعم بعض هذه العناصر بسهولة إذا كان أي شخص يهتم.

متغير عدم التوافق


يبحث Makepp في $PATH عن أمر مطابق لإرجاع متغيرات مثل "$(CC)" أو
"$(CXX)"، بينما يحتوي GNU على إعدادات افتراضية ثابتة. كما يعطي makepp الأفضلية لـ "gcc" و
"g++" بينما من المدهش أن GNU يقوم بإرجاع "cc" للأول، ولكن نفس الشيء بالنسبة لـ
أخير. يمكنك تجاوز هذه العناصر في ملف makefile أو في سطر الأوامر أو عن طريق تصدير ملف
متغير يحمل نفس الاسم قبل استدعاء makepp.

استخدم makepp_incompatibility عبر الإنترنت باستخدام خدمات onworks.net


خوادم ومحطات عمل مجانية

قم بتنزيل تطبيقات Windows و Linux

أوامر لينكس

Ad