كتيبات سطر الأوامر

Man » دليل make عبر الإنترنت - وثائق مفصلة عبر الإنترنت لصفحة دليل make

🌍
make - أداة GNU Make لإدارة مجموعات البرامج

ملخص

make [خيار]... [هدف]...

الوصف

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

لـ التحضير لاستخدام make، يجب كتابة ملف يسمى ملف make يصف العلاقات بين الملفات في برنامجك، ويقدم أوامر لتحديث كل ملف. في برنامج، عادةً ما يتم تحديث الملف القابل للتنفيذ من ملفات الكائنات، والتي يتم إنشاؤها بدورها عن طريق تجميع ملفات المصدر.

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

make

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

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

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

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

الخيارات

-b, -m

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

-B, --always-make

قم بإجراء جميع الأهداف بشكل غير مشروط.

-C dir, --directory=dir

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


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

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

-e، --environment-overrides
امنح المتغيرات المأخوذة من البيئة الأسبقية على المتغيرات الموجودة في ملفات "makefile".

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

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

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

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

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

--jobserver-style=style
النمط الذي سيتم استخدامه لخادم المهام. يمكن أن يكون النمط أحد الخيارات التالية: "fifo" أو "pipe" أو "sem" (فقط على نظام التشغيل Windows).

-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> والذي يمكّن الوضع العشوائي مع قيمة بذرة محددة. إذا تم حذف MODE، فإن الوضع الافتراضي هو random.

-W file، --what-if=file، --new-file=file، --assume-new=file

تظاهر بأن الملف الهدف قد تم تعديله للتو. عند استخدامه مع العلامة -n، يعرض هذا ما سيحدث إذا قمت بتعديل هذا الملف. بدون العلامة -n، فإنه مشابه إلى حد كبير لتشغيل أمر touch على الملف المحدد قبل تشغيل make، باستثناء أن وقت التعديل يتغير فقط في خيال make.

--warn-undefined-variables

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

حالة الخروج

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

انظر أيضا

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

info make

الوصول إلى الدليل الكامل.

الأخطاء

راجع الفصل "المشاكل والأخطاء" في دليل GNU Make.

المؤلف

ساهم دينيس مورس من جامعة ستانفورد بهذه الصفحة اليدوية. ساهم مايك فرايسنجر في تحديثات إضافية. تم إعادة صياغتها بواسطة رولاند ماكجراث. يقوم بصيانتها بول سميث.

حقوق النشر

حقوق النشر © 1992-1993، 1996-2023 مؤسسة البرمجيات الحرة. هذا الملف هو جزء من GNU Make.

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

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

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