Make - فرمان لینوکس - فرمان یونیکس

make - گنو را برای نگهداری گروهی از برنامهها آماده می کند

خلاصه داستان

make [ -f makefile ] [گزینه] ... target ...

هشدار

این صفحه عصری از اسناد GNU make است. این گاهی اوقات به روز می شود، زیرا پروژه GNU از nroff استفاده نمی کند. برای تکمیل مستندات فعلی، به فایل info file make.info که از فایل منبع Texinfo make.texinfo ساخته شده است مراجعه کنید .

شرح

هدف از ایجاد ابزار به طور خودکار تعیین می کند که کدام یک از برنامه های بزرگ باید مجددا ترکیب شوند و دستورات آنها را مجددا کامپایل کنند. این کتاب راهنمای اجرای GNU را که توسط ریچارد استالمن و رولاند مک گراث نوشته شده است توصیف می کند. مثالهای ما نشان می دهد برنامه های C از آنجایی که آنها رایج تر هستند، اما شما می توانید با هر زبان برنامه نویسی ، با کامپایلر را با یک دستور shell اجرا کنید. در واقع، ایجاد محدود به برنامه ها نیست. شما می توانید آن را برای توصیف هر کار که در آن برخی از فایل ها باید به طور خودکار از دیگران به روز رسانی هر زمان که دیگران تغییر دهید.

برای آماده شدن برای استفاده از make ، باید یک فایل با نام Makefile بنویسید که روابط بین فایل ها را در برنامه شما توضیح می دهد و دستورات برای به روز رسانی هر فایل را مشخص می کند. در یک برنامه، معمولا فایل اجرایی از فایلهای شیء به روز می شود که به نوبه خود بوسیله کامپایل فایل های منبع ساخته شده است.

هنگامی که یک فایل make مناسب وجود دارد، هر بار که برخی از فایل های منبع را تغییر دهید، این دستور ساده پوسته:

ساختن

کافی است تا تمام ترکیبات لازم را انجام دهد. برنامه Make با استفاده از پایگاه دادههای Makefile و زمانهای اصلاح آخرین فایلها تصمیم میگیرد که کدام فایل باید به روز شود. برای هر یک از این فایل ها، دستورات ذخیره شده در پایگاه داده را صادر می کند.

اجرای دستورات در Makefile را برای به روز رسانی یک یا چند نام هدف، جایی که نام معمولا یک برنامه است. اگر هیچ گزینه -f وجود داشته باشد، برای makefiles GNUmakefile ، makefile و Makefile در آن منظور نگاه کنید.

به طور معمول باید makefile را به صورت Makefile یا Makefile نامگذاری کنید . (ما Makefile را توصیه میکنیم زیرا به نظر میرسد که نزدیک به آغاز یک لیست دایرکتوری، درست در کنار سایر فایلهای مهم مانند README ظاهر می شود .) اولین نام چک شده، GNUmakefile برای اکثر فایرفاکس ها توصیه نمی شود. شما باید از این نام استفاده کنید اگر شما یک فایل makefile که برای GNU ساخته شده است را داشته باشید و توسط نسخه های دیگر ساخته نخواهد شد. اگر makefile `- 'باشد، ورودی استاندارد خواندن است.

به روز رسانی یک هدف اگر آن را به فایل های پیش نیاز بستگی دارد که از زمانی که هدف آخرین اصلاح شد یا اگر هدف وجود ندارد، تغییر داده شده است.

گزینه ها

-b

-m

این گزینه ها برای سازگاری با سایر نسخه های make نادیده گرفته می شوند.

-C dir

قبل از خواندن makefiles یا انجام کاری دیگر به پوشه dir بروید . اگر گزینه های چندگانه مشخص شده باشند، هر کدام نسبت به قبلی قبلی تفسیر می شوند: -C / -C و غیره برابر با -C / و غیره است. این معمولا با دعوت بازگشتی ساخته شده است .

-d

اطلاعات اشکال زدایی را علاوه بر پردازش نرمال چاپ کنید. اطلاعات اشکالزدایی می گوید که چه فایلی برای بازسازی درنظر گرفته می شود، چه زمانبندی ها مقایسه می شود و چه نتایجی دارد، چه پرونده هایی واقعا باید بازسازی شوند، کدام قوانین ضمنی در نظر گرفته شده اند و چه کاربردی - همه چیز جالب است که چگونه تصمیم می گیرد چه باید بکنم

متغیرهای گرفته شده از محیط را بر متغیرهای makefiles اعمال کنید.

-f فایل

از فایل به عنوان یک فایل make استفاده کنید .

-من

تمام خطاهای دستورات اجرا شده برای بازسازی فایل ها را نادیده بگیرید.

من دیوار

فهرست دایرکتوری را برای جستجو برای makefiles ها تعریف می کند. اگر چندین گزینه برای تعیین چندین دایرکتوری مورد استفاده قرار گیرد، دایرکتوری ها در جهت مشخص شده جستجو می شوند. بر خلاف استدلال هایی که برای دیگر پرچم ها ایجاد می شود ، پوشه ها با پرچم های -I ممکن است بلافاصله بعد از پرچم آمده باشند: -I dir اجازه داده شده است، و همچنین -I dir. این نحو برای سازگاری با پرعلامت C پیش پردازنده مجاز است.

شغل های شغلی

تعداد مشاغل (دستورات) را برای اجرا همزمان تعیین می کند. اگر گزینه بیش از یک گزینه وجود دارد، آخرین یکی موثر است. اگر گزینه -j بدون یک استدلال داده شود، تعداد کارهایی که می توانند همزمان اجرا شوند را ایجاد نمی کند.

-k

پس از یک خطا به حداکثر ممکن ادامه دهید. در حالی که هدف که شکست خورده است و آنهایی که به آن بستگی دارند، نمی توانند بازسازی شوند، وابستگی های دیگر این اهداف را می توان همگی پردازش کرد.

-l

-l بار

مشخص می کند که اگر شغل های دیگری وجود داشته باشد، شغل های جدید (دستورات) شروع می شود و میانگین بار حداقل بار (تعداد نقطه شناور) است. بدون استدلال، محدودیت بار قبلی را حذف می کند.

-n

دستورات را اجرا کنید که اجرا شوند، اما آنها را اجرا نکنید.

-o فایل

فایل فایل را حتی اگر قدیمی تر از وابستگی های آن نیست، بازنویسی کنید و هیچ تغییری در فایل ایجاد نکنید. اساسا فایل به عنوان بسیار قدیمی رفتار می شود و قوانین آن نادیده گرفته می شوند.

چاپ پایگاه داده (قواعد و مقادیر متغیر) که از خواندن makefiles حاصل می شود؛ سپس اجرا را طبق معمول انجام دهید یا همانطور که در غیر این صورت مشخص شده است. این همچنین اطلاعات نسخه ارائه شده توسط سوئیچ -v (نگاه کنید به زیر) را چاپ می کند. برای چاپ پایگاه داده بدون تلاش برای بازسازی هر فایل، از make -p -f / dev / null استفاده کنید.

-q

`` حالت سوال ''. دستورات را اجرا نکنید یا هر چیزی را چاپ کنید فقط اگر وضعیت های مشخص شده در حال حاضر به روز باشند، وضعیت خروجی صفر است که صفر است، در غیر این صورت، غیر صفر است.

-r

استفاده از قوانین ضمنی ساخته شده را از بین ببرید. همچنین لیست پیش فرض پسوندها را برای قوانین پسوند پاک کنید.

-s

عملیات خاموش؛ دستورات را به صورت اعدام نکنید.

-S

اثر انتخاب گزینه -k را لغو کنید. این هرگز لازم نیست به جز در یک مسیر بازگشتی که در آن -k ممکن است از طریق ساختن سطح بالا از طریق MAKEFLAGS به ارث برده شود یا اگر شما در MAKEFLAGS-k در محیط خود تنظیم کنید.

فایلهای لمسی (بدون نیاز به تغییر آنها) به جای اجرای دستوراتشان، آنها را لمس کنید. این برای تظاهر به دستورات انجام شده است، به منظور گمراه کردن دعوتنامه های آینده.

-v

نسخه نسخه برنامه را به همراه یک کپی رایت، یک لیست از نویسندگان و یک اطلاعیه که هیچ ضمانتی وجود ندارد را چاپ کنید.

-w

قبل از و بعد از پردازش، یک پیام حاوی دایرکتوری کار را چاپ کنید. این ممکن است مفید باشد برای ردیابی اشتباهات از لانه های پیچیده دستورات بازگشت مجدد.

فایل W

وانمود کنید که فایل هدف فقط اصلاح شده است. هنگامی که با پرچم -n استفاده می شود، این نشان می دهد چه اتفاقی می افتد اگر شما می بایست آن فایل را تغییر دهید. بدون -n ، تقریبا همانند اجرای یک دستور لمسی در فایل داده شده قبل از اجرا است، به جز اینکه زمان اصلاح فقط در تخیل make تغییر می کند .