MAKE(1)

الاسم
make - أداة GNU Make لصيانة مجموعات البرامج

موجز
make [خيار]... [هدف]...

الوصف

تحدد أداة make آلي أي أجزاء من برنامج كبير تحتاج إلى إعادة ترجمة، وتصدر الأوامر لإعادة ترجمتها. يصف الدليل تنفيذ GNU لـ make، الذي كتبه ريتشارد ستالمان ورولاند ماكغراث، ويُصان حالياً بواسطة بول سميث. تظهر أمثلتنا برامج C، لأنها شائعة جداً، لكن يمكنك استخدام make مع أي لغة برمجة يمكن تشغيل مترجمها بأمر شل. في الواقع، make ليس مقتصراً على البرامج. يمكنك استخدامه لوصف أي مهمة حيث يجب تحديث بعض الملفات آلي من ملفات أخرى كلما تغيرت تلك الأخرى.

للتحضير لاستخدام make، يجب كتابة ملف يُسمى makefile يصف العلاقات بين الملفات في برنامجك، ويوفر أوامر لتحديث كل ملف. في البرنامج، يُحدث الملف التنفيذي عادة من ملفات كائنية، والتي تُصنع بدورها بترجمة ملفات المصدر.

بمجرد وجود makefile مناسب، كل مرة تغير فيها بعض ملفات المصدر، يكفي أمر الشل البسيط هذا:

    make

لتنفيذ جميع إعادة الترجمة الضرورية. يستخدم برنامج make وصف makefile وأوقات آخر تعديل للملفات ليقرر أي الملفات تحتاج إلى تحديث. لكل من تلك الملفات، يصدر الأوامر المسجلة في makefile.

ينفذ make الأوامر في makefile لتحديث هدف واحد أو أكثر targets، حيث target هو عادة برنامج. إذا لم يوجد خيار -f، سيبحث make عن ملفات makefiles GNUmakefile و makefile و Makefile بهذا الترتيب.

عادة يجب تسمية makefile الخاص بك إما makefile أو Makefile. (نوصي بـ Makefile لأنه يظهر بشكل بارز قرب بداية قائمة الدليل، بجوار ملفات مهمة أخرى مثل README.) الاسم الأول الذي يُفحص، GNUmakefile، غير موصى به لمعظم ملفات makefile. يجب استخدام هذا الاسم إذا كان لديك makefile خاص بـ GNU Make، ولن تُفهمه إصدارات أخرى من make. إذا كان makefile هو '-'، يُقرأ الإدخال المعياري.

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

الخيارات

-b، -m
    تُتجاهل هذه الخيارات للتوافق مع إصدارات أخرى من make.

-B، --always-make
    صنع جميع الأهداف دون شرط.

-C dir، --directory=dir
    التغيير إلى الدليل dir قبل قراءة ملفات makefile أو فعل أي شيء آخر. إذا تم تحديد خيارات -C متعددة، يُفسر كل منها بالنسبة للسابق: -C / -C etc مكافئ لـ -C /etc. يُستخدم هذا عادة مع الاستدعاءات التكرارية لـ make.

-d  طباعة معلومات التصحيح بالإضافة إلى المعالجة العادية. تخبر معلومات التصحيح أي الملفات يُنظر فيها لإعادة الصنع، وأي أوقات الملفات تُقارن وبأي نتائج، وأي الملفات تحتاج فعلاً إلى إعادة الصنع، وأي القواعد الضمنية تُنظر فيها وأيها تُطبق---كل شيء مثير حول كيف يقرر make ما يفعله.

--debug[=أعلام]
    طباعة معلومات التصحيح بالإضافة إلى المعالجة العادية. إذا تم حذف أعلام، يكون السلوك مماثلاً كما لو تم تحديد -d. يمكن أن تكون أعلام أي أو كل الأسماء التالية، مفصولة بفاصلة أو مسافة. الحرف الأول فقط مهم: يمكن حذف الباقي: all لكل مخرجات التصحيح (نفس استخدام -d)، basic للتصحيح الأساسي، verbose للتصحيح الأساسي الأكثر تفصيلاً، implicit لإظهار عمليات البحث عن القواعد الضمنية، jobs لتفاصيل استدعاء الأوامر، makefile للتصحيح أثناء إعادة صنع ملفات makefile، print يُظهر جميع الوصفات التي تُشغل حتى لو كانت صامتة، و why يُظهر سبب قرار make بإعادة بناء كل هدف. استخدم none لتعطيل جميع أعلام التصحيح السابقة.

-e، --environment-overrides
    إعطاء المتغيرات المأخوذة من البيئة أولوية على المتغيرات من ملفات makefile.

-E سلسلة، --eval سلسلة
    تفسير سلسلة باستخدام دالة eval، قبل تحليل أي ملفات makefile.

-f ملف، --file=ملف، --makefile=ملف
    استخدام ملف كـ makefile.

-i، --ignore-errors
    تجاهل جميع الأخطاء في الأوامر المنفذة لإعادة صنع الملفات.

-I dir, --include-dir=dir
    يحدد دليلاً dir للبحث عن ملفات make المضمنة. إذا استُخدمت عدة خيارات -I لتحديد عدة أدلة، تُبحث الأدلة بالترتيب المحدد. على عكس الوسائط للأعلام الأخرى لـ make، قد تأتي الأدلة المعطاة بأعلام -I مباشرة بعد العلم: -Idir مسموح به، وكذلك -I dir. هذه الصياغة مسموح بها للتوافق مع علم -I للمعالج المسبق للغة C.

-j [jobs], --jobs[=jobs]
    يحدد عدد jobs (الأوامر) التي تُشغّل في وقت واحد. إذا وُجد أكثر من خيار -j، يكون الأخير هو الفعال. إذا أُعطي خيار -j بدون وسيط، لن يحد make من عدد الوظائف التي يمكن تشغيلها في وقت واحد.

--jobserver-style=style
    نمط خادم الوظائف المستخدم. قد يكون style واحدًا من fifo أو pipe أو sem (لنظام ويندوز فقط).

-k, --keep-going
    يستمر قدر الإمكان بعد حدوث خطأ. بينما لا يمكن إعادة بناء الهدف الذي فشل وتلك التي تعتمد عليه، يمكن معالجة التبعيات الأخرى لهذه الأهداف بنفس الطريقة.

-l [load], --load-average[=load]
    يحدد أنه لا ينبغي بدء أي وظائف جديدة (أوامر) إذا كانت هناك وظائف أخرى قيد التشغيل وكان متوسط الحمل على الأقل load (رقم عشري). بدون وسيط، يزيل حد الحمل السابق.

-L, --check-symlink-times
    يستخدم أحدث وقت تعديل بين الروابط الرمزية والهدف.

-n, --just-print, --dry-run, --recon
    يطبع الأوامر التي سيتم تنفيذها، لكن لا ينفذها (باستثناء ظروف معينة).

-o file, --old-file=file, --assume-old=file
    لا يعيد بناء الملف file حتى لو كان أقدم من تبعياته، ولا يعيد بناء أي شيء بسبب تغييرات في file. أساسًا يُعامل الملف على أنه قديم جدًا وتُتجاهل قواعده.

-O[type], --output-sync[=type]
    عند تشغيل عدة وظائف بالتوازي مع -j، يضمن جمع مخرجات كل وظيفة معًا بدلاً من تداخلها مع مخرجات وظائف أخرى. إذا لم يُحدد type أو كان target، تُجمع مخرجات الوصفة الكاملة لكل هدف معًا. إذا كان type هو line، تُجمع مخرجات كل سطر أمر داخل وصفة معًا. إذا كان type هو recurse، تُجمع مخرجات make استدعائي كامل معًا. إذا كان type هو none، يُعطل تزامن المخرجات.

-p, --print-data-base
    يطبع قاعدة البيانات (القواعد وقيم المتغيرات) الناتجة عن قراءة ملفات make؛ ثم ينفذ كالمعتاد أو كما هو محدد خلاف ذلك. يطبع هذا أيضًا معلومات الإصدار المعطاة بواسطة المفتاح -v (انظر أدناه). لطباعة قاعدة البيانات دون محاولة إعادة بناء أي ملفات، استخدم make -p -f/dev/null.

-q, --question
    “وضع الاستعلام”. لا يشغل أي أوامر، ولا يطبع أي شيء؛ فقط يُرجع حالة خروج تكون صفرًا إذا كانت الأهداف المحددة محدثة بالفعل، وغير صفرية خلاف ذلك.

-r, --no-builtin-rules
    يلغي استخدام القواعد الضمنية المضمنة. يمسح أيضًا القائمة المبدئية للواحق لقواعد اللواحق.

-R, --no-builtin-variables
    لا يعرف أي متغيرات مضمنة.

-s، --silent، --quiet
    تشغيل صامت؛ لا يطبع الأوامر أثناء تنفيذها.

--no-silent
    يلغي تأثير الخيار -s.

-S, --no-keep-going, --stop
    ألغِ تأثير الخيار -k.

-t, --touch
    المس الملفات (وسمها كحديثة دون تغييرها فعليًا) بدلاً من تشغيل أوامرها. يُستخدم هذا للتظاهر بأن الأوامر نُفذت، بهدف خداع استدعاءات مستقبلية لـ make.

--trace
    تُطبع معلومات حول حالة كل هدف (لماذا يُعاد بناء الهدف وما الأوامر التي تُشغل لإعادة بنائه).

-v، --version
    اطبع إصدار برنامج make بالإضافة إلى حقوق النشر وقائمة بالمؤلفين وإشعار بعدم وجود ضمان.

-w, --print-directory
    اطبع رسالة تحتوي على دليل العمل قبل وبعد المعالجة الأخرى. قد يكون هذا مفيدًا لتتبع الأخطاء من التداخلات المعقدة لأوامر make التكرارية.

--no-print-directory
    أطفئ -w، حتى لو كان قد شُغل ضمنيًا.

--shuffle[=MODE]
    فعّل خلط ترتيب الأهداف والمتطلبات الأساسية. MODE هو أحد: none لتعطيل وضع الخلط، random لخلط المتطلبات الأساسية بترتيب عشوائي، reverse لاعتبار المتطلبات الأساسية بترتيب عكسي، أو عدد صحيح <seed> الذي يفعّل وضع random بقيمة seed محددة. إذا حُذف MODE فالمبدئي هو random.

-W file, --what-if=file, --new-file=file, --assume-new=file
    تظاهر بأن الهدف file قد عُدّل للتو. عند استخدامه مع العلم -n، يُظهر هذا ما سيحدث إذا عدّلت ذلك الملف. بدون -n، هو تقريبًا نفس تشغيل أمر touch على الملف المعطى قبل تشغيل make، باستثناء أن وقت التعديل يُغير فقط في خيال make.

--warn-undefined-variables
    حذر عند الإشارة إلى متغير غير معرف.

حالة الخروج
يخرج GNU Make بحالة صفر إذا حُللت جميع ملفات make بنجاح ولم يفشل أي هدف بُني. تُعاد حالة واحد إذا استُخدم العلم -q وقرر make أن هدفًا يحتاج إلى إعادة بناء. تُعاد حالة اثنان إذا وُجدت أي أخطاء.

انظر أيضًا
الوثائق الكاملة لـ make تُحافظ عليها كدليل Texinfo. إذا كان برنامجا info و make مثبتين بشكل صحيح في موقعك، الأمر

    info make

سيتيح لك الوصول إلى الدليل الكامل.

العلل
انظر الفصل “Problems and Bugs” في The GNU Make Manual.

المؤلف
صفحة الدليل هذه ساهم بها Dennis Morse من جامعة Stanford. تحديثات إضافية ساهم بها Mike Frysinger. أُعيد صياغتها بواسطة Roland McGrath. يُحافظ عليها بواسطة Paul Smith.

حقوق النسخ
حقوق النشر © 1992-1993, 1996-2023 Free Software Foundation, Inc. هذا الملف جزء من GNU Make.

GNU Make هو برنامج حر؛ يمكنك إعادة توزيعه و/أو تعديله وفقًا لشروط رخصة GNU العامة كما تنشرها مؤسسة البرمجيات الحرة؛ إما الإصدار 3 من الرخصة، أو (حسب اختيارك) أي إصدار لاحق.

يُوزع GNU Make على أمل أن يكون مفيدًا، ولكن دون أي ضمان؛ حتى دون الضمان الضمني للتسويق أو الملاءمة لغرض معين. راجع رخصة GNU العامة لمزيد من التفاصيل.

يجب أن تكون قد تلقيت نسخة من رخصة GNU العامة مع هذا البرنامج. إذا لم يكن الأمر كذلك، انظر https://www.gnu.org/licenses/.

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.