GoGPT Best VPN GoSearch

فاویکون OnWorks

pmake - آنلاین در ابر

pmake را در ارائه دهنده هاست رایگان OnWorks از طریق Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا کنید.

این دستور pmake است که می تواند در ارائه دهنده هاست رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.

برنامه:

نام


bmake - حفظ وابستگی های برنامه

خلاصه


bmake [-BeikNnqrstWwX] [-C فهرست راهنما] [-D متغیر] [-d پرچم ها] [-f تهیه پرونده] [-I فهرست راهنما]
[-J خصوصی] [-j max_jobs] [-m فهرست راهنما] [-T پرونده] [-V متغیر] [متغیر = مقدار]
[هدف ...]

شرح


bmake برنامه ای است که برای ساده سازی نگهداری برنامه های دیگر طراحی شده است. ورودی آن a است
لیستی از مشخصات فایل هایی که برنامه ها و فایل های دیگر به آنها بستگی دارد. اگر نه -f
تهیه پرونده گزینه makefile داده شده است، bmake سعی خواهد کرد باز شودتهیه پرونده' سپس 'makefile' که در
برای یافتن مشخصات اگر فایل 'وابسته استوجود دارد، خوانده می شود (نگاه کنید به mkdep(1).

این صفحه راهنما فقط به عنوان یک سند مرجع در نظر گرفته شده است. برای توضیح کامل تر
of bmake و makefiles لطفا مراجعه کنید PMMake - A آموزش.

bmake محتویات را آماده خواهد کرد پرچم های ماکی متغیر محیطی به خط فرمان
آرگومان ها قبل از تجزیه آنها

گزینه ها به شرح زیر است:

-B سعی کنید با اجرای یک پوسته در هر دستور و توسط به عقب سازگار باشید
اجرای دستورات برای ایجاد منابع یک خط وابستگی به ترتیب.

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

-D متغیر
تعریف کردن متغیر در زمینه جهانی 1 باشد.

-d [-]پرچم ها
اشکال زدایی را روشن کنید و مشخص کنید کدام بخش از آن است bmake برای چاپ اشکال زدایی هستند
اطلاعات مگر اینکه پرچم‌ها قبل از «-» باشند، به آن اضافه می‌شوند پرچم های ماکی
متغیر محیطی است و توسط هر فرزندی پردازش می شود. به صورت پیش فرض،
اطلاعات اشکال زدایی به خطای استاندارد چاپ می شود، اما با استفاده از آن می توان آن را تغییر داد
la F پرچم اشکال زدایی خروجی اشکال زدایی همیشه بدون بافر است. علاوه بر این، اگر
اشکال زدایی فعال است اما خروجی اشکال زدایی به خروجی استاندارد هدایت نمی شود
خروجی استاندارد خط بافر است. پرچم یک یا چند مورد از موارد زیر است:

A چاپ تمام اطلاعات اشکال زدایی ممکن. معادل مشخص کردن همه
پرچم های اشکال زدایی

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

C چاپ اطلاعات اشکال زدایی در مورد فهرست کاری فعلی.

c چاپ اطلاعات اشکال زدایی در مورد ارزیابی مشروط.

d چاپ اطلاعات اشکال زدایی در مورد جستجوی فهرست و ذخیره سازی.

e چاپ اطلاعات اشکال زدایی در مورد دستورات و اهداف ناموفق.

F[+]نام فایل
محل نوشته شدن خروجی اشکال زدایی را مشخص کنید. این باید آخرین پرچم باشد،
زیرا باقیمانده استدلال را مصرف می کند. اگر شخصیت
بلافاصله پس از اینکه پرچم "F" "+" شد، فایل در داخل باز می شود
حالت اضافه در غیر این صورت فایل رونویسی می شود. اگر نام فایل است
'stdout' یا 'stderr' سپس خروجی اشکال زدایی به استاندارد نوشته می شود
توصیف کننده فایل خروجی خروجی یا استاندارد خطای استاندارد (و '+'
گزینه تاثیری ندارد). در غیر این صورت، خروجی به نام نوشته می شود
فایل. اگر نام فایل به ".%d" ختم شود، "%d" با pid جایگزین می شود.

f چاپ اطلاعات اشکال زدایی در مورد ارزیابی حلقه.

g1 قبل از ساختن هر چیزی، نمودار ورودی را چاپ کنید.

g2 پس از انجام همه چیز، یا قبل از خروج از خطا، نمودار ورودی را چاپ کنید.

g3 قبل از خروج از خطا، نمودار ورودی را چاپ کنید.

j چاپ اطلاعات اشکال زدایی در مورد اجرای چند پوسته.

l دستورات را در Makefiles صرف نظر از پیشوند بودن یا نبودن آنها چاپ کنید
توسط '@' یا سایر پرچم های "آرام". همچنین به عنوان رفتار "بلند" شناخته می شود.

M چاپ اطلاعات اشکال زدایی در مورد تصمیمات حالت "متا" در مورد اهداف.

m چاپ اطلاعات اشکال زدایی در مورد ایجاد اهداف، از جمله اصلاح
تاریخ.

n اسکریپت های دستور موقت ایجاد شده هنگام اجرای دستورات را حذف نکنید.
این اسکریپت های موقت در دایرکتوری مورد اشاره ایجاد می شوند
متغیر محیطی TMPDIR یا در دایرکتوری / tmp اگر TMPDIR تنظیم نشده باشد یا روی مقدار تنظیم شود
رشته خالی اسکریپت های موقت توسط mkstemp(3) و دارند
نام های فرم ساخت XXXXXX. توجه داشته باشید: این می تواند فایل های زیادی را در TMPDIR یا ایجاد کند
دایرکتوری / tmp، پس با احتیاط استفاده کنید.

p چاپ اطلاعات اشکال زدایی در مورد تجزیه فایل make.

s چاپ اطلاعات اشکال زدایی در مورد قوانین تبدیل پسوند.

t چاپ اطلاعات اشکال زدایی در مورد نگهداری لیست هدف.

V مجبور کردن -V گزینه ای برای چاپ مقادیر خام متغیرها.

v چاپ اطلاعات اشکال زدایی در مورد تخصیص متغیر.

x دستورات شل را با -x بنابراین دستورات واقعی همانطور که هستند چاپ می شوند
اجرا شده.

-e مشخص کنید که متغیرهای محیطی تخصیص کلان درون فایل‌های makefi را لغو کنند.

-f تهیه پرونده
به جای فایل پیش فرض، یک فایل را برای خواندن مشخص کنیدتهیه پرونده'. اگر تهیه پرونده است '-
ورودی استاندارد خوانده می شود. ممکن است چندین فایل ایجاد شده مشخص شود و در آن خوانده شود
سفارش مشخص شده

-I فهرست راهنما
دایرکتوری را مشخص کنید که در آن فایل های makefi و فایل های موجود در آن جستجو شوند. را
فهرست راهنمای makefile سیستم (یا دایرکتوری ها، به -m گزینه) به طور خودکار است
به عنوان بخشی از این لیست گنجانده شده است.

-i خروج غیر صفر دستورات پوسته در makefile را نادیده بگیرید. معادل مشخص کردن
'-قبل از هر خط فرمان در makefile.

-J خصوصی
این گزینه باید نه توسط کاربر مشخص شود.

هنگامی که j گزینه در یک ساخت بازگشتی استفاده می شود، این گزینه توسط یک make به ارسال می شود
کودک باعث می شود تا به تمام فرآیندهای ساخت در ساخت اجازه دهد تا برای جلوگیری از همکاری با یکدیگر همکاری کنند
بارگذاری بیش از حد سیستم

-j max_jobs
حداکثر تعداد مشاغل را مشخص کنید bmake ممکن است در هر زمان در حال اجرا باشد. در
مقدار ذخیره می شود .ساخت.شغل. حالت سازگاری را خاموش می کند، مگر اینکه B پرچم است
نیز مشخص شده است. وقتی حالت سازگاری خاموش است، تمام دستورات مرتبط با a
هدف بر خلاف فراخوان سنتی در یک فراخوانی پوسته اجرا می شود
فراخوانی پوسته در هر خط این می تواند اسکریپت های سنتی را که تغییر می کنند، بشکند
دایرکتوری ها در هر فراخوانی دستور و سپس انتظار دارید که با یک دستور تازه شروع کنید
محیط در خط بعدی به جای اصلاح اسکریپت ها کارآمدتر است
از روشن کردن سازگاری به عقب.

-k پس از مواجه شدن با خطا، پردازش را ادامه دهید، اما فقط در مورد اهدافی که این کار را انجام می دهند
به هدفی که ایجاد آن باعث خطا شده است بستگی ندارد.

-m فهرست راهنما
دایرکتوری را مشخص کنید که در آن sys.mk و makefiles موجود در آن جستجو شود
پرونده⟩-سبک شامل بیانیه. در -m گزینه را می توان چندین بار برای تشکیل a استفاده کرد
مسیر جستجو این مسیر مسیر شامل مسیر پیش‌فرض سیستم را لغو می‌کند:
/usr/share/mk. علاوه بر این مسیر شامل سیستم به جستجو اضافه می شود
مسیر مورد استفاده برای "پرونده"-style شامل عبارات (نگاه کنید به -I گزینه).

اگر نام فایل یا دایرکتوری در -m آرگومان (یا محیط MAKESYSPATH
متغیر) با رشته ".../" شروع می شود و سپس bmake مشخص شده را جستجو خواهد کرد
فایل یا دایرکتوری نامگذاری شده در قسمت باقی مانده از رشته آرگومان. جستجو
با دایرکتوری فعلی Makefile شروع می شود و سپس به سمت بالا کار می کند
ریشه سیستم فایل اگر جستجو موفقیت آمیز بود، دایرکتوری حاصل
جایگزین مشخصات ".../" در -m بحث و جدل. در صورت استفاده، این ویژگی اجازه می دهد
bmake برای جستجوی آسان در درخت منبع فعلی برای فایل های sys.mk سفارشی شده (به عنوان مثال،
با استفاده از ".../mk/sys.mk" به عنوان آرگومان).

-n دستوراتی را که باید اجرا می شدند را نمایش دهید، اما در واقع آنها را اجرا نکنید
مگر اینکه هدف به منبع ویژه .MAKE وابسته باشد (به زیر مراجعه کنید).

-N دستوراتی را که می بایست اجرا می شدند را نمایش دهید، اما در واقع هیچ کدام را اجرا نمی کنند
از آنها؛ مفید برای اشکال زدایی فایل های سطح بالا بدون نزول در
دایرکتوری های فرعی

-q هیچ دستوری را اجرا نکنید، اما اگر اهداف مشخص شده به روز هستند و
1، در غیر این صورت

-r از قوانین داخلی مشخص شده در فایل ساخت سیستم استفاده نکنید.

-s هنگام اجرای هیچ دستوری تکرار نکنید. معادل مشخص کردن '@' قبل از
هر خط فرمان در makefile

-T فایل ردیابی
هنگام استفاده با -j پرچم، ضمیمه رکورد ردیابی به فایل ردیابی برای هر کار شروع شده
و تکمیل شد.

-t به جای ساختن مجدد یک هدف همانطور که در makefile مشخص شده است، آن را ایجاد کنید یا به روز کنید
زمان اصلاح آن برای به روز نشان دادن آن.

-V متغیر
چاپ bmakeایده از ارزش متغیر، در زمینه جهانی. نسازید
هر هدف ممکن است چندین نمونه از این گزینه مشخص شود. متغیرها خواهد بود
یک خط در هر خط، با یک خط خالی برای هر متغیر تهی یا تعریف نشده چاپ شود. اگر
متغیر حاوی "$" است، سپس مقدار قبل از چاپ گسترش می یابد.

-W هر هشداری را در حین تجزیه فایل های اولیه به عنوان خطا در نظر بگیرید.

-w ورود و خروج پیام های دایرکتوری، پردازش قبل و بعد را چاپ کنید.

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

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

هفت نوع خط مختلف در یک makefile وجود دارد: مشخصات وابستگی فایل،
دستورات پوسته، تخصیص متغیرها، شامل دستورات، دستورات شرطی، حلقه‌ها،
و نظرات

به طور کلی، خطوط را می توان با پایان دادن به آنها با یک اسلش از یک خط به خط دیگر ادامه داد
('\'). کاراکتر خط جدید انتهایی و فضای خالی اولیه در خط زیر هستند
در یک فضای واحد فشرده شده است.

فایل وابستگی مشخصات


خطوط وابستگی از یک یا چند هدف، یک اپراتور و صفر یا چند منبع تشکیل شده است.
این رابطه ای را ایجاد می کند که در آن اهداف به منابع "وابسته" دارند و معمولاً هستند
از آنها ایجاد شده است. رابطه دقیق بین هدف و منبع مشخص می شود
توسط اپراتور که آنها را جدا می کند. این سه اپراتور به شرح زیر است:

: یک هدف در صورتی منسوخ در نظر گرفته می شود که زمان اصلاح آن کمتر از زمان دیگری باشد
از منابع آن منابع برای یک هدف در طول خطوط وابستگی جمع می شوند
اپراتور استفاده می شود. هدف حذف می شود اگر bmake قطع شده است

! اهداف همیشه دوباره ایجاد می شوند، اما تا زمانی که همه منابع مورد بررسی قرار نگیرند و دوباره ایجاد شوند.
در صورت لزوم ایجاد شده است. منابع برای یک هدف در طول خطوط وابستگی جمع می شوند
اپراتور استفاده می شود. هدف حذف می شود اگر bmake قطع شده است

:: اگر هیچ منبعی مشخص نشده باشد، هدف همیشه دوباره ایجاد می شود. در غیر این صورت، یک هدف است
اگر یکی از منابع آن اخیراً اصلاح شده باشد، قدیمی در نظر گرفته شود
هدف. منابع برای یک هدف در این حالت در خطوط وابستگی جمع نمی شوند
اپراتور استفاده می شود. هدف حذف نخواهد شد اگر bmake قطع شده است

اهداف و منابع ممکن است حاوی مقادیر عام پوسته '?'، '*'، '[]' و '{}' باشند. در
مقادیر '?'، '*'، و '[]' فقط ممکن است به عنوان بخشی از جزء نهایی هدف یا
منبع، و باید برای توصیف فایل های موجود استفاده شود. مقدار '{}' لزوماً لازم نیست
برای توصیف فایل های موجود استفاده می شود. گسترش به ترتیب دایرکتوری است، نه به ترتیب حروف الفبا
در پوسته انجام می شود.

پوسته دستورات


هر هدف ممکن است یک یا چند خط از دستورات پوسته را که معمولاً مورد استفاده قرار می‌گیرد، با خود مرتبط کرده باشد
برای ایجاد هدف هر یک از خطوط این اسکریپت باید قبل از یک برگه باشد. (برای
به دلایل تاریخی، فضاها پذیرفته نمی شوند.) در حالی که اهداف می توانند در بسیاری از وابستگی ها ظاهر شوند
خطوط در صورت تمایل، به طور پیش فرض تنها یکی از این قوانین ممکن است توسط یک اسکریپت ایجاد دنبال شود.
اگر "::' عملگر استفاده می شود، با این حال، همه قوانین ممکن است شامل اسکریپت ها باشد و اسکریپت ها هستند
به ترتیب یافت شده اجرا شد.

هر خط به عنوان یک فرمان پوسته جداگانه در نظر گرفته می شود، مگر اینکه انتهای خط با a فرار کند
اسلش معکوس ('\') در این صورت آن خط و خط بعدی با هم ترکیب می شوند. اگر شخصیت های اول
از دستور هر ترکیبی از ' هستند@'،'+'، یا '-'، فرمان به طور ویژه درمان می شود. آ
'@' باعث می شود که فرمان قبل از اجرا تکرار نشود. آ '+' باعث فرمان به
حتی زمانی که اعدام شود -n داده شده است. این شبیه به اثر .MAKE special است
منبع، با این تفاوت که اثر را می توان به یک خط از یک اسکریپت محدود کرد. آ '-' که در
حالت سازگاری باعث می شود که هرگونه وضعیت خروج غیر صفر از خط فرمان نادیده گرفته شود.

چه زمانی bmake در حالت jobs اجرا می شود -j max_jobs، کل اسکریپت برای هدف به تغذیه می شود
یک نمونه از پوسته در حالت سازگاری (غیر شغلی)، هر دستور در یک اجرا می شود
فرآیند جداگانه اگر دستور حاوی متا کاراکترهای پوسته باشد
('#=|^(){};&<>*?[]:$`\\n') به پوسته منتقل می شود. در غیر این صورت bmake تلاش خواهد کرد
اجرای مستقیم اگر یک خط با ' شروع شود-و پوسته ErrCtl را فعال کرده است و سپس شکست می خورد
از خط فرمان مانند حالت سازگاری نادیده گرفته می شود. در غیر این صورت '-' تاثیر می گذارد
کل کار؛ اسکریپت در اولین خط فرمانی که شکست می خورد متوقف می شود، اما هدف متوقف می شود
شکست خورده تلقی نشود.

میکفایل ها باید طوری نوشته شوند که حالت bmake عملیات آنها را تغییر نمی دهد
رفتار - اخلاق. به عنوان مثال، هر دستوری که نیاز به استفاده از "cd" یا "chdir" بدون بالقوه دارد
تغییر دایرکتوری برای دستورات بعدی باید در پرانتز قرار گیرد تا اجرا شود
در یک زیر پوسته برای اجبار به استفاده از یک پوسته، از شکستگی های خط فرار کنید تا آن را ایجاد کنید
کل اسکریپت یک دستور. مثلا:

اجتناب از chdir- عوارض جانبی:
@echo Building $@ در «pwd».
@(cd ${.CURDIR} && ${MAKE} $@)
@echo بازگشت به "pwd".

sure-one-shell-reardless-of-mode:
@echo Building $@ در `pwd`; \
(cd ${.CURDIR} && ${MAKE} $@)؛ \
echo بازگشت به "pwd".

پس از bmake اراده چدیر(2) به '.OBJDIRقبل از اجرای هر هدف، هر فرزند پردازش می کند
با آن به عنوان دایرکتوری کاری فعلی شروع می شود.

متغیر تکالیف


متغیرهای ساخت بسیار شبیه متغیرهای موجود در پوسته هستند و طبق سنت از همه تشکیل شده‌اند
حروف بزرگ.

متغیر واگذاری اصلاح کننده ها
پنج عملگر که می توان برای تخصیص مقادیر به متغیرها استفاده کرد به شرح زیر است:

= مقدار را به متغیر اختصاص دهید. هر مقدار قبلی لغو می شود.

+= مقدار را به مقدار فعلی متغیر اضافه کنید.

?= اگر متغیر از قبل تعریف نشده است، مقدار را به آن اختصاص دهید.

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

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

هر فضای سفید قبل از اختصاص داده شده ارزش حذف شده است؛ اگر مقدار در حال اضافه شدن است، a
یک فاصله بین محتویات قبلی متغیر و ضمیمه درج می شود
ارزش.

متغیرها با احاطه کردن نام متغیر با پرانتزهای فرفری ('{}') یا
پرانتز ('()') و قبل از آن علامت دلار ('$'). اگر نام متغیر شامل
فقط یک حرف، پرانتز یا پرانتز اطراف مورد نیاز نیست. این کوتاه تر
فرم توصیه نمی شود

اگر نام متغیر حاوی یک دلار باشد، ابتدا خود نام گسترش می یابد. این اجازه می دهد
نام‌های متغیر تقریباً دلخواه، اما نام‌هایی که حاوی دلار، پرانتز، پرانتز یا
فضای خالی واقعا بهتر است اجتناب شود!

اگر نتیجه گسترش یک متغیر دارای علامت دلار ('$') باشد، رشته گسترش می یابد
دوباره.

جایگزینی متغیر در سه زمان متمایز رخ می دهد، بسته به اینکه متغیر در کجا باشد
مورد استفاده قرار گرفته.

1. متغیرها در خطوط وابستگی با خواندن خط گسترش می یابند.

2. متغیرهای موجود در دستورات پوسته زمانی که فرمان پوسته اجرا می شود، گسترش می یابند.

3. متغیرهای شاخص حلقه ".for" در هر تکرار حلقه گسترش می یابند. توجه داشته باشید که دیگر
متغیرها در داخل حلقه‌ها گسترش نمی‌یابند، بنابراین کد مثال زیر:

برای من در 1 2 3
a+= ${i}
j= ${i}
b+= ${j}
پایان برای

همه:
@echo ${a}
@echo ${b}

چاپ خواهد کرد:

1 2 3
3 3 3

زیرا در حالی که ${a} حاوی "1 2 3" پس از اجرای حلقه است، ${b} حاوی "${j} است.
${j} ${j}" که به "3 3 3" گسترش می یابد زیرا پس از تکمیل حلقه ${j} حاوی "3" است.

متغیر کلاس ها
چهار کلاس مختلف متغیرها (به ترتیب تقدم افزایشی) عبارتند از:

متغیرهای محیطی
متغیرهای تعریف شده به عنوان بخشی از bmakeمحیط زیست

متغیرهای جهانی
متغیرهای تعریف شده در makefile یا در makefiles موجود.

متغیرهای خط فرمان
متغیرهایی که به عنوان بخشی از خط فرمان تعریف می شوند.

متغیرهای محلی
متغیرهایی که برای یک هدف خاص تعریف می شوند.

متغیرهای محلی همگی ساخته شده‌اند و مقادیر آنها از هدفی به مقصد دیگر به‌طور جادویی متفاوت است. آی تی
در حال حاضر امکان تعریف متغیرهای محلی جدید وجود ندارد. هفت متغیر محلی به عنوان هستند
به شرح زیر است:

ALLSRC فهرست همه منابع برای این هدف؛ همچنین به عنوان '>".

.بایگانی نام فایل آرشیو؛ همچنین به عنوان '!".

IMPSRC در قوانین تبدیل پسوند، نام/مسیر منبعی که از آن
هدف باید تبدیل شود (منبع " ضمنی"). همچنین به عنوان '<'. آی تی
در قوانین صریح تعریف نشده است.

.MEMBER نام عضو بایگانی؛ همچنین به عنوان '%".

OODATE فهرست منابع برای این هدف که قدیمی تلقی می شوند. همچنین شناختهشده است
مانند '?".

.PREFIX پیشوند فایل هدف، فقط شامل بخش فایل، بدون پسوند است
یا اجزای دایرکتوری قبلی؛ همچنین به عنوان '*'. پسوند باید باشد
یکی از پسوندهای شناخته شده اعلام شده با پسوندها یا نخواهد بود
شناسایی شده.

.هدف نام هدف؛ همچنین به عنوان '@".

فرم های کوتاهتر ('>'،'!'،'<'،'%'،'?'،'*'، و'@') برای عقب ماندگی مجاز هستند
سازگاری با فایل های قبلی و قدیمی POSIX ساخته شده و توصیه نمی شود.

انواع این متغیرها با علامت نگارشی که بلافاصله با "D" یا "F" دنبال می شود، به عنوان مثال
'$(@D)'، فرم های قدیمی معادل استفاده از اصلاح کننده های ':H' و ':T' هستند. این فرم ها هستند
برای سازگاری با AT&T System V UNIX makefiles و POSIX پذیرفته شده است اما چنین نیست
توصیه می شود.

چهار تا از متغیرهای محلی ممکن است در منابع روی خطوط وابستگی استفاده شوند زیرا آنها گسترش می یابند
به مقدار مناسب برای هر هدف در خط. این متغیرها عبارتند از.هدف'،'.PREFIX
'.بایگانی'، و'.MEMBER".

اضافی ساخته شده در متغیرها
علاوه بر این، bmake متغیرهای زیر را تنظیم می کند یا می داند:

$ یک علامت دلار منفرد '$'، یعنی '$$' به یک علامت دلار منفرد گسترش می یابد.

.ALLTARGETS لیستی از تمام اهدافی که در Makefile با آنها مواجه شده اند. اگر در طول ارزیابی شود
تجزیه Makefile، فقط آن دسته از اهدافی را فهرست می کند که تاکنون با آنها مواجه شده اند.

.CURDIR مسیری به دایرکتوری که در آن bmake اعدام شد. به توضیحات مراجعه کنید
از 'PWD' برای جزئیات بیشتر.

.INCLUDEDFROMDIR
فهرست راهنمای فایل این Makefile از آن گنجانده شده است.

.INCLUDEDFROMFILE
نام فایل فایل این Makefile از آن گنجانده شده است.

نام آن را بسازید bmake اعدام شد با (argv[0]). برای سازگاری bmake
را نیز تنظیم می کند .ساخت با همان ارزش متغیر ترجیحی برای استفاده عبارت است از
متغیر محیطی MAKE زیرا با نسخه های دیگر سازگاری بیشتری دارد
of bmake و نمی توان آن را با هدف ویژه ای با همین نام اشتباه گرفت.

MAKE.DEPENDFILE
نام‌گذاری فایل اولیه (پیش‌فرض 'وابسته است') که وابستگی های تولید شده از آن هستند
خواندن.

MAKE.EXPAND_VARIABLES
یک بولی که رفتار پیش فرض را کنترل می کند -V گزینه.

.MAKE.EXPORTED لیست متغیرهای صادر شده توسط bmake.

.ساخت.شغل استدلال به -j گزینه.

.پیوند.کار
If bmake اجرا می شود با j سپس خروجی برای هر هدف با یک توکن پیشوند داده می شود
'--- هدف ---' که قسمت اول آن را می توان از طریق کنترل کرد
.پیوند.کار. اگر .پیوند.کار خالی است، هیچ نشانه ای چاپ نشده است.
برای مثال: .MAKE.JOB.PREFIX=${.newline}---${.MAKE:T}[${.MAKE.PID}]
توکن هایی مانند «---make[1234] target ---» تولید کنید که ردیابی آن را آسان تر می کند
درجه ای از موازی بودن به دست می آید.

MAKEFLAGS متغیر محیطی 'MAKEFLAGS' ممکن است حاوی هر چیزی باشد
مشخص شده در bmakeخط فرمان هر چیزی که در آن مشخص شده است bmakeفرمان
خط به متغیر MAKEFLAGS اضافه می شود که سپس وارد می شود
محیط برای همه برنامه هایی که bmake اجرا می کند.

.MAKE.LEVEL عمق بازگشت از bmake. نمونه اولیه از bmake 0 خواهد بود و
یک مقدار افزایشی در محیط قرار داده می شود تا توسط بعدی دیده شود
نسل. این به تست هایی مانند: .if ${.MAKE.LEVEL} == 0 اجازه محافظت می دهد
چیزهایی که فقط باید در نمونه اولیه ارزیابی شوند bmake.

MAKE.MAKEFILE_PREFERENCE
لیست مرتب شده نام فایل های ساخته شده (پیش فرض 'تهیه پرونده'،'makefile') که
bmake برای دنبال خواهد کرد

.MAKE.MAKEFILES
لیستی از فایل های make خوانده شده توسط bmake، که برای ردیابی مفید است
وابستگی ها هر makefile صرف نظر از تعداد فقط یک بار ثبت می شود
از زمان های خوانده شده

.MAKE.MODE پس از خواندن همه فایل‌ها پردازش شد. می تواند روی حالتی که bmake اجرا می شود
می تواند حاوی تعدادی کلیدواژه باشد:

جمع کردن پسندیدن -B، قرار می دهد bmake به حالت "Compat"

متا قرار می دهد bmake به حالت "meta"، جایی که فایل های متا برای آن ایجاد می شوند
هر هدف برای گرفتن دستور اجرا، خروجی تولید شده و
if پرونده(4) موجود است، سیستم فراخوانی می کند که از
علاقه به bmake. خروجی گرفته شده زمانی می تواند بسیار مفید باشد
تشخیص خطاها

curdirOk= bf به طور معمول bmake فایل های .meta را در ' ایجاد نمی کند.CURDIR'. این
را می توان با تنظیم لغو کرد bf به مقداری که نشان می دهد
درست است.

env برای اشکال زدایی، گنجاندن محیط در آن می تواند مفید باشد
فایل متا.

واژگان اگر در حالت "متا" هستید، یک سرنخ در مورد هدف در حال ساخت چاپ کنید.
اگر در غیر این صورت بیلد به صورت بی صدا اجرا شود، این کار مفید است. در
پیام چاپ شده مقدار: .MAKE.META.PREFIX.

ignore-cmd برخی از فایل‌های ساخت دستوراتی دارند که به سادگی پایدار نیستند. این
کلیدواژه باعث می شود برای تعیین اینکه آیا a
هدف در حالت "متا" قدیمی است. همچنین ببینید NOMETA_CMP.

ساکت = bf If bf درست است، هنگامی که یک فایل .meta ایجاد می شود، هدف را علامت گذاری کنید
.بی صدا.

MAKE.META.BAILIWICK
در حالت "meta"، فهرستی از پیشوندهایی را ارائه می دهد که با دایرکتوری ها مطابقت دارند
کنترل شده توسط bmake. اگر فایلی که خارج از .OBJDIR اما
در بایلیویک مذکور گم شده است، هدف فعلی خارج از
تاریخ.

.MAKE.META.CREATED
در حالت "meta"، این متغیر حاوی لیستی از تمام فایل های متا به روز شده است.
اگر خالی نباشد، می توان از آن برای شروع پردازش استفاده کرد .MAKE.META.FILES.

.MAKE.META.FILES
در حالت "meta"، این متغیر حاوی لیستی از تمام فایل های متا استفاده شده است
(به روز شده یا نه). از این لیست می توان برای پردازش فایل های متا استفاده کرد
استخراج اطلاعات وابستگی

.MAKE.META.IGNORE_PATHS
فهرستی از پیشوندهای مسیر را ارائه می دهد که باید نادیده گرفته شوند. زیرا
انتظار می رود محتوا در طول زمان تغییر کند. لیست پیش فرض شامل موارد زیر است:/ توسعه
/و غیره / پروسه دایرکتوری / tmp / var / اجرا / var / tmp'

.MAKE.META.PREFIX
پیام چاپ شده را برای هر فایل متا به روز شده در "meta verbose" تعریف می کند.
حالت مقدار پیش فرض این است:
ساختمان ${.TARGET:H:tA}/${.TARGET:T}

MAKEOVERRIDES این متغیر برای ثبت نام متغیرهای اختصاص داده شده به آن استفاده می شود
خط فرمان، به طوری که آنها می توانند به عنوان بخشی از "MAKEFLAGS" صادر شوند. این
رفتار را می توان با اختصاص یک مقدار خالی به ' غیرفعال کردMAKEOVERRIDES'
در یک فایل ایجاد شده متغیرهای اضافی را می توان از یک makefile توسط
اضافه کردن نام آنها به 'MAKEOVERRIDES'. 'MAKEFLAGS' دوباره صادر می شود
هر زمان که 'MAKEOVERRIDES' اصلاح شده است.

MAKE.PATH_FILEMON
If bmake ساخته شد با پرونده(4) پشتیبانی، این است که به مسیر مجموعه
گره دستگاه این به فایل های make اجازه می دهد تا این پشتیبانی را آزمایش کنند.

.MAKE.PID شناسه فرآیند bmake.

.MAKE.PPID شناسه فرآیند والد bmake.

.MAKE.SAVE_DOLARS
مقدار باید بولنی باشد که کنترل می‌کند «$$» هنگام انجام این کار حفظ شود
تکالیف ':='. پیش فرض نادرست است، برای سازگاری با عقب. تنظیم
برای سازگاری با سایر برندها صادق است. اگر روی false تنظیم شود، '$$' تبدیل می شود
'$' به ازای قوانین ارزیابی عادی.

MAKE_PRINT_VAR_ON_ERROR
چه زمانی bmake به دلیل خطا متوقف می شود، نام و مقدار آن را چاپ می کند
'.CURDIR' و همچنین مقدار هر متغیری که در آن نامگذاری شده است
'MAKE_PRINT_VAR_ON_ERROR".

.خط جدید به این متغیر به سادگی یک کاراکتر خط جدید به عنوان مقدار آن اختصاص داده می شود. این
اجازه گسترش با استفاده از :@ اصلاح کننده برای قرار دادن یک خط جدید بین تکرارها
از حلقه به جای یک فاصله. به عنوان مثال، چاپ از
'MAKE_PRINT_VAR_ON_ERROR' می تواند به عنوان انجام شود
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}.

.OBJDIR مسیری به دایرکتوری که در آن اهداف ساخته شده اند. ارزش آن است
با تلاش تعیین می شود چدیر(2) به دایرکتوری های زیر به ترتیب و
با استفاده از مسابقه اول:

1. ${MAKEOBJDIRPREFIX}${.CURDIR}

(فقط در صورتی که 'MAKEOBJDIRPREFIX' در محیط یا روی دستور تنظیم شده باشد
خط.)

2. ${MAKEOBJDIR}

(فقط در صورتی که 'MAKEOBJDIR' در محیط یا روی فرمان تنظیم شده باشد
خط.)

3. ${.CURDIR}/obj.${MACHINE}

4. ${.CURDIR}/obj

5. /usr/obj/${.CURDIR}

6. ${.CURDIR}

بسط متغیر قبل از استفاده روی مقدار انجام می شود، بنابراین
عباراتی مانند
${.CURDIR:S،^/ usr / src,/var/obj,}
ممکن است استفاده شود. این به ویژه با 'MAKEOBJDIR' مفید است.

'.OBJDIR"ممکن است در پرونده از طریق هدف ویژه اصلاح شود".OBJDIR".
در همه موارد ، bmake اراده چدیر(2) به دایرکتوری مشخص شده در صورت وجود،
و تنظیم کنید.OBJDIR' و 'PWD' به آن دایرکتوری قبل از اجرای هر هدف.

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

.پارسفایل نام پایه جریان 'makefileدر حال تجزیه شدن این متغیر و
'.پارسدیر"هر دو فقط در حالی تنظیم می شوند که"فایل های ایجاد شده' در حال تجزیه هستند. اگر
شما می خواهید مقادیر فعلی خود را حفظ کنید، آنها را با استفاده از یک متغیر اختصاص دهید
تکلیف با بسط: (':=')

.مسیر متغیری که فهرستی از دایرکتوری ها را نشان می دهد bmake جستجو خواهد کرد
برای فایل ها لیست جستجو باید با استفاده از هدف به روز شود..مسیر'
به جای متغیر

PWD مسیر جایگزین به دایرکتوری فعلی. bmake به طور معمول تنظیم می شود.CURDIR' به
مسیر متعارف ارائه شده توسط getcwd(3). با این حال، اگر متغیر محیطی
"PWD" تنظیم می شود و مسیری را به دایرکتوری فعلی می دهد bmake مجموعه
'.CURDIRدر عوض به مقدار «PWD». این رفتار غیرفعال است اگر
'MAKEOBJDIRPREFIX' تنظیم شده است یا 'MAKEOBJDIR' حاوی یک تبدیل متغیر است.
'PWD' روی مقدار ' تنظیم شده است.OBJDIRبرای همه برنامه هایی که bmake
اجرا می کند.

.TARGETS لیستی از اهدافی که به صراحت در خط فرمان مشخص شده است، در صورت وجود.

VPATH با کولون جدا شده (":") فهرست دایرکتوری هایی که bmake فایل ها را جستجو می کند.
این متغیر فقط برای سازگاری با برنامه‌های ساخت قدیمی پشتیبانی می‌شود، استفاده کنید
'.مسیر' بجای.

متغیر اصلاح کننده ها
بسط متغیر ممکن است برای انتخاب یا تغییر هر کلمه از متغیر اصلاح شود (که در آن a
"کلمه" دنباله ای از کاراکترها با فضای سفید محدود شده است). قالب کلی یک متغیر
گسترش به شرح زیر است:

${variable[:modifier[:...]]}

هر اصلاح کننده با یک دونقطه شروع می شود که ممکن است با علامت بک اسلش ('\') حذف شود.

مجموعه ای از اصلاح کننده ها را می توان از طریق یک متغیر به صورت زیر مشخص کرد:

modifier_variable=تغییرکننده[:...]
${variable:${modifier_variable}[:...]}

در این مورد اولین اصلاح کننده در modifier_variable با دو نقطه شروع نمی شود، زیرا
که باید در متغیر ارجاع ظاهر شود. اگر هر یک از اصلاح کننده ها در
modifier_variable حاوی یک علامت دلار ('$') است، این علامت باید دو برابر شود تا زودتر جلوگیری شود
به گسترش است.

اصلاح کننده های پشتیبانی شده عبارتند از:

:E هر کلمه در متغیر را با پسوند آن جایگزین می کند.

:H هر کلمه در متغیر را با همه چیز به جز آخرین جزء جایگزین می کند.

:Mالگو
فقط کلماتی را انتخاب کنید که مطابقت دارند الگو. کاراکترهای عام پوسته استاندارد
("*"، "؟"، و "[]") ممکن است استفاده شود. کاراکترهای عام ممکن است با a فرار کنند
اسلش معکوس ('\'). در نتیجه نحوه تقسیم ارزش ها به کلمات، تطبیق و
سپس پیوست، ساختاری مانند
${VAR:M*}
فاصله بین کلمات را عادی می کند، تمام فضای پیشرو و انتهایی را حذف می کند و
تبدیل چند فضای متوالی به تک فاصله

:Nالگو
این یکسان است با ':M'، اما همه کلماتی را که مطابقت ندارند انتخاب می کند الگو.

:O هر کلمه را در متغیر بر اساس حروف الفبا مرتب کنید. برای مرتب کردن کلمات به ترتیب معکوس از
':O:[-1..1]ترکیبی از اصلاح کننده ها

: گاو نر کلمات را در متغیر تصادفی کنید. نتایج هر بار که شما ارجاع می دهید متفاوت خواهد بود
به متغیر اصلاح شده؛ از تکلیف با بسط استفاده کنید (':=') برای جلوگیری از چنین
رفتار - اخلاق. مثلا،

LIST= uno due tre quattro
RANDOM_LIST= ${LIST:Ox}
STATIC_RANDOM_LIST:= ${LIST:Ox}

همه:
@echo "${RANDOM_LIST}"
@echo "${RANDOM_LIST}"
@echo "${STATIC_RANDOM_LIST}"
@echo "${STATIC_RANDOM_LIST}"
ممکن است خروجی مشابهی تولید کند:

quattro due tre uno
tre due quattro uno
due uno quattro tre
due uno quattro tre

:Q هر متا کاراکتر پوسته‌ای را در متغیر نقل‌قول می‌کند تا بتوان با خیال راحت از آن عبور کرد
از طریق فراخوان های بازگشتی از bmake.

:R هر کلمه در متغیر را با همه چیز به جز پسوند آن جایگزین می کند.

:gmtime
مقدار یک رشته قالب برای است زمان صرف وقت(3)، با استفاده از جریان gmtime(3).

:هش
یک هش 32 بیتی از مقدار را محاسبه کرده و آن را به صورت ارقام هگز کدگذاری کنید.

:زمان محلی
مقدار یک رشته قالب برای است زمان صرف وقت(3)، با استفاده از جریان زمان محلی(3).

:tA سعی کنید متغیر را با استفاده از یک مسیر مطلق تبدیل کنید مسیر واقعی(3)، اگر شکست بخورد،
ارزش بدون تغییر است

:tl متغیر را به حروف کوچک تبدیل می کند.

:tsc
کلمات موجود در متغیر معمولاً با یک فاصله در بسط از هم جدا می شوند. این اصلاح کننده
جداکننده را برای شخصیت تنظیم می کند c. اگر c حذف می شود، سپس از جداکننده استفاده نمی شود.
فرارهای رایج (شامل کدهای عددی اکتالی)، همانطور که انتظار می رود کار می کنند.

:tu متغیر را به حروف بزرگ تبدیل می کند.

: tW باعث می شود که مقدار به عنوان یک کلمه (احتمالاً حاوی رنگ سفید جاسازی شده) در نظر گرفته شود
فضا). همچنین ببینید ':[*]".

: دو باعث می شود که مقدار به عنوان دنباله ای از کلمات محدود شده با فضای سفید در نظر گرفته شود. دیدن
همچنین ':[@]".

:S/رشته_قدیمی/رشته_جدید/[1 گرم وات]
اولین رخداد را اصلاح کنید رشته_قدیمی در مقدار متغیر، جایگزینی آن با
رشته_جدید. اگر یک 'g' به آخرین اسلش الگو اضافه شود، همه رخدادها در
هر کلمه جایگزین می شود فقط اگر یک '1' به آخرین اسلش الگو اضافه شود، فقط
اولین کلمه تحت تأثیر قرار می گیرد. اگر یک W به آخرین اسلش الگو اضافه شود،
سپس مقدار به عنوان یک کلمه واحد در نظر گرفته می شود (احتمالاً حاوی فضای سفید تعبیه شده).
If رشته_قدیمی با کارت شروع می شود ('^')، رشته_قدیمی در ابتدای لنگر انداخته است
هر کلمه. اگر رشته_قدیمی با علامت دلار ('$') به پایان می رسد، در انتهای آن لنگر انداخته است
هر کلمه. داخل رشته_جدید، علامت علامت ('&') با رشته_قدیمی (بدون
هر «^» یا «$»). هر کاراکتری ممکن است به عنوان یک جداکننده برای قسمت های آن استفاده شود
رشته اصلاح کننده ممکن است از کاراکترهای لنگر، علامت و جداکننده فرار شود
اسلش معکوس ('\').

انبساط متغیر به شکل عادی در داخل هر دو رخ می دهد رشته_قدیمی و رشته_جدید
با این استثنا که از بک اسلش برای جلوگیری از انبساط دلار استفاده می شود
علامت ('$')، نه علامت دلار قبلی که معمولاً وجود دارد.

:C/الگو/جایگزینی/[1 گرم وات]
La :C اصلاح کننده درست مانند :S اصلاح کننده به جز اینکه رشته های قدیمی و جدید،
به جای اینکه رشته های ساده باشند، یک عبارت منظم توسعه یافته هستند (نگاه کنید به regex(3))
رشته الگو و ed(1)-سبک رشته جایگزینی. به طور معمول، اولین اتفاق
از الگوی الگو در هر کلمه مقدار با جایگزینی.
اصلاح کننده '1' باعث می شود که جایگزینی حداکثر برای یک کلمه اعمال شود. اصلاح کننده 'g'
باعث می شود که جایگزینی برای نمونه های زیادی از الگوی جستجو اعمال شود الگو as
در کلمه یا کلماتی که در آن یافت می شود رخ می دهد. اصلاح کننده "W" باعث می شود که مقدار باشد
به عنوان یک کلمه (احتمالاً حاوی فضای سفید تعبیه شده) در نظر گرفته می شود. توجه داشته باشید که '1' و
'g' متعامد هستند. اولی مشخص می کند که آیا چندین کلمه بالقوه هستند یا خیر
تحت تاثیر قرار می گیرد، دومی که آیا تعویض های متعدد به طور بالقوه می تواند در هر یک رخ دهد
کلمه متاثر

همانطور که برای :S اصلاح کننده، الگو و جایگزینی در معرض گسترش متغیر هستند
قبل از تجزیه به عنوان عبارات منظم.

:T هر کلمه در متغیر را با آخرین جزء آن جایگزین می کند.

:u کلمات تکراری مجاور را حذف کنید (مانند یونیک(1).

:?true_string:رشته_کاذب
اگر نام متغیر (نه مقدار آن)، هنگامی که به عنوان یک عبارت شرطی .if تجزیه می شود،
درست ارزیابی می کند، به عنوان مقدار آن برمی گردد true_string، در غیر این صورت آن را برگردانید
رشته_کاذب. از آنجایی که نام متغیر به عنوان عبارت استفاده می شود، :? باید اولین باشد
اصلاح کننده بعد از نام خود متغیر - که البته معمولاً شامل
بسط های متغیر یک خطای رایج تلاش برای استفاده از عباراتی مانند
${NUMBERS:M42:?match:no}
که در واقع تعریف شده (NUMBERS) را آزمایش می کند، برای تعیین اینکه آیا هر کلمه ای با "42" که شما نیاز دارید مطابقت دارد یا خیر
از چیزی مانند:
${"${NUMBERS:M42}" != "":?match:no}.

:old_string=new_string
این جایگزینی متغیر سبک AT&T System V UNIX است. باید آخرین باشد
اصلاح کننده مشخص شده است. اگر رشته_قدیمی or رشته_جدید شامل تطبیق الگو نیست
شخصیت % سپس فرض می شود که آنها در انتهای هر کلمه لنگر می اندازند، بنابراین فقط
پسوندها یا کل کلمات ممکن است جایگزین شوند. در غیر این صورت % رشته فرعی است رشته_قدیمی
در تعویض شود رشته_جدید.

انبساط متغیر به شکل عادی در داخل هر دو رخ می دهد رشته_قدیمی و رشته_جدید
با این استثنا که از بک اسلش برای جلوگیری از انبساط دلار استفاده می شود
علامت ('$')، نه علامت دلار قبلی که معمولاً وجود دارد.

:@دما@رشته@
این مکانیزم گسترش حلقه از محیط توسعه OSF (ODE) است.
برخلاف .برای گسترش حلقه ها در زمان مرجع رخ می دهد. اختصاص دهید دما به هر کلمه
در متغیر و ارزیابی کنید رشته. کنوانسیون ODE این است دما باید شروع شود و
با یک دوره به پایان برسد. مثلا.
${LINKS:@.LINK.@${LN} ${TARGET} ${.LINK.}@}

با این حال، یک متغیر تک کاراکتری اغلب خواناتر است:
${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'${.newline}@}

:Uنیووال
اگر متغیر تعریف نشده باشد نیووال ارزش است. اگر متغیر تعریف شده باشد،
مقدار موجود برگردانده می شود. این یکی دیگر از ویژگی های ساخت ODE است. برای تنظیم مفید است
برای مثال CFLAGS هر هدف:
${_${.TARGET:T}_CFLAGS:U${DEF_CFLAGS}}
اگر یک مقدار فقط زمانی مورد نیاز است که متغیر تعریف نشده باشد، از:
${VAR:D:Unewval}

:Dنیووال
اگر متغیر تعریف شده باشد نیووال ارزش است.

:L نام متغیر مقدار است.

:P مسیر گره ای که همان نام متغیر را دارد مقدار است. اگر چنین نیست
گره وجود دارد یا مسیر آن تهی است، سپس از نام متغیر استفاده می شود. برای
این اصلاح کننده برای کار کردن، نام (گره) باید حداقل روی rhs a ظاهر شده باشد
وابستگی

:!CMD!
خروجی دویدن CMD ارزش است.

اگر متغیر غیر خالی باشد به عنوان یک دستور اجرا می شود و خروجی جدید می شود
ارزش.

::=خ
به متغیر مقدار داده می شود خ پس از تعویض این اصلاح کننده و آن
تغییرات در موقعیت‌های مبهم مانند تمایل به تنظیم یک متغیر وقتی مفید هستند
دستورات پوسته در حال تجزیه هستند. این اصلاح‌کننده‌های انتساب همیشه به هیچ چیز گسترش می‌یابند،
بنابراین، اگر در یک خط قاعده ظاهر شوند، باید قبل از آن چیزی حفظ شود
bmake خوشحال.

'::کمک می کند تا از مطابقت های نادرست با سبک AT&T System V UNIX جلوگیری شود := اصلاح کننده و
از آنجایی که جایگزینی همیشه رخ می دهد ::= فرم به طور مبهم مناسب است.

::؟=خ
در مورد ::= اما فقط در صورتی که متغیر از قبل مقداری نداشته باشد.

::+=خ
ضمیمه کردن خ به متغیر

::!=CMD
تخصیص خروجی از CMD به متغیر

:[محدوده]
یک یا چند کلمه را از مقدار انتخاب می کند یا سایر عملیات مربوط به آن را انجام می دهد
روشی که در آن ارزش به کلمات تقسیم می شود.

به طور معمول، یک مقدار به عنوان دنباله ای از کلمات که با فضای سفید محدود شده اند، تلقی می شود. مقداری
اصلاح‌کننده‌ها این رفتار را سرکوب می‌کنند و باعث می‌شوند که یک مقدار به عنوان یک کلمه واحد در نظر گرفته شود
(احتمالاً حاوی فضای سفید تعبیه شده است). یک مقدار خالی یا مقداری که متشکل است
به طور کامل از فضای سفید، به عنوان یک کلمه واحد در نظر گرفته می شود. برای اهداف ":[]'
اصلاح کننده، کلمات هر دو به جلو با استفاده از اعداد صحیح مثبت نمایه می شوند (که در آن شاخص 1 است
اولین کلمه را نشان می دهد، و به عقب با استفاده از اعداد صحیح منفی (که در آن شاخص -1 است
بیانگر کلمه آخر است).

La محدوده در معرض گسترش متغیر قرار می گیرد و نتیجه گسترش یافته است
به شرح زیر تفسیر می شود:

شاخص یک کلمه واحد را از مقدار انتخاب می کند.

شروع..پایان
همه کلمات را انتخاب می کند شروع به پایان، شامل. مثلا، ':[2..-1]' انتخاب می کند
همه کلمات از کلمه دوم تا آخرین کلمه اگر شروع بزرگتر از پایان,
سپس کلمات به ترتیب معکوس خروجی می شوند. مثلا، ':[-1..1]' همه را انتخاب می کند
کلمات از آخر تا اول

* باعث می شود که اصلاح کننده های بعدی مقدار را به عنوان یک کلمه واحد در نظر بگیرند (احتمالاً
حاوی فضای سفید تعبیه شده). مشابه اثر "$*" در بورن
پوسته.

0 یعنی همان ":[*]".

@ باعث می‌شود که اصلاح‌کننده‌های بعدی ارزش را به‌عنوان دنباله‌ای از کلمات محدود شده در نظر بگیرند
توسط فضای سفید مشابه اثر "$@" در پوسته Bourne.

# تعداد کلمات موجود در مقدار را برمی‌گرداند.

عبارتند از بیانیه، شرایط و برای حلقه ها


گنجاندن Makefile، ساختارهای شرطی و حلقه‌هایی که یادآور برنامه‌نویسی C هستند
زبان ارائه شده است bmake. تمام این ساختارها با یک خط شروع می شوند
یک نویسه تک نقطه ('.'). فایل ها همراه با هر کدام هستند .عبارتند ازپرونده⟩ یا .عبارتند از
"پروندهمتغیرهای بین پرانتزهای زاویه یا دو گیومه برای تشکیل پرونده گسترش می‌یابند
نام. اگر از براکت‌های زاویه‌ای استفاده می‌شود، انتظار می‌رود که فایل اولیه موجود در سیستم باشد
دایرکتوری makefile اگر از دو نقل قول استفاده می شود، دایرکتوری شامل makefile و هر کدام
دایرکتوری های مشخص شده با استفاده از -I گزینه قبل از دایرکتوری makefile سیستم جستجو می شود.
برای سازگاری با نسخه های دیگر bmake "شامل فایل ..." نیز پذیرفته می شود.

اگر عبارت include به صورت نوشته شده باشد .-عبارتند از و یا به عنوان .شامل سپس خطا در مکان یابی و/یا
باز کردن شامل فایل ها نادیده گرفته می شود.

اگر عبارت include به صورت نوشته شده باشد .شامل نه تنها خطاها در مکان یابی و/یا باز شدن هستند
شامل فایل‌های نادیده گرفته می‌شود، اما وابستگی‌های قدیمی در فایل شامل صرفا نادیده گرفته می‌شوند
حرفه ای MAKE.DEPENDFILE.

عبارات شرطی نیز با یک نقطه به عنوان اولین کاراکتر یک خط قبل از آن قرار می گیرند.
شرایط ممکن به شرح زیر است:

.خطا پیام
سپس پیام همراه با نام فایل و شماره خط چاپ می شود
bmake خارج خواهد شد

صادرات متغیر ...
متغیر جهانی مشخص شده را صادر کنید. اگر لیست متغیری ارائه نشده باشد، همه جهانی ها
به جز برای متغیرهای داخلی (آنهایی که با '.' شروع می شوند) صادر می شوند. این نیست
متاثر از -X پرچم، بنابراین باید با احتیاط استفاده شود. برای سازگاری با
دیگر bmake برنامه‌های "متغیر صادرات=مقدار" نیز پذیرفته می‌شود.

اضافه کردن نام متغیر به .MAKE.EXPORTED معادل صادرات یک متغیر است.

.export-env متغیر ...
مانند '.export'، با این تفاوت که متغیر به آن ضمیمه نشده است .MAKE.EXPORTED.
این اجازه می دهد تا مقداری را به محیطی صادر کنید که با محیط مورد استفاده متفاوت است
by bmake در داخل

.صادرات- تحت اللفظی متغیر ...
مانند '.export-env'، با این تفاوت که متغیرهای مقدار گسترش نمی‌یابند.

اطلاعات پیام
پیام همراه با نام فایل ساخت و شماره خط چاپ می شود.

.undef متغیر
تعریف متغیر جهانی مشخص شده را لغو کنید. فقط متغیرهای سراسری ممکن است تعریف نشده باشند.

صادرات متغیر ...
نقطه مقابل ".صادرات". جهانی مشخص شده متغیر از حذف خواهد شد
.MAKE.EXPORTED. اگر لیست متغیری ارائه نشود، همه جهانی‌ها صادر نمی‌شوند و
.MAKE.EXPORTED حذف شده.

.unexport-env
همه جهانی‌هایی که قبلاً صادر شده‌اند را صادر نکنید و محیطی را که به ارث رسیده‌اند پاک کنید
والدین. این عملیات باعث نشت حافظه محیط اصلی می شود، بنابراین
باید کم استفاده شود تست برای .MAKE.LEVEL 0 بودن منطقی است. همچنین
توجه داشته باشید که هر متغیری که در محیط والد ایجاد شده است باید باشد
در صورت تمایل به صراحت حفظ می شود. مثلا:

.if ${.MAKE.LEVEL} == 0
مسیر := ${PATH}
.unexport-env
صادرات PATH
. endif

منجر به محیطی می شود که فقط حاوی "PATH" است که حداقل مفید است
محیط. در واقع '.MAKE.LEVEL' نیز به محیط جدید منتقل می شود.

.هشدار پیام
پیام پیشوند شده توسط 'هشدار:' همراه با نام makefil چاپ شده است
و شماره خط

.اگر [!]بیان [اپراتور بیان ...]
ارزش یک عبارت را تست کنید.

.ifdef [!]متغیر [اپراتور متغیر ...]
مقدار یک متغیر را تست کنید.

.ifndef [!]متغیر [اپراتور متغیر ...]
مقدار یک متغیر را تست کنید.

.ifmake [!]هدف [اپراتور هدف ...]
هدف در حال ساخت را آزمایش کنید.

.ifnmake [!] هدف [اپراتور هدف ...]
هدف در حال ساخت را آزمایش کنید.

.دیگر معکوس کردن معنای آخرین شرطی.

.elif [!] بیان [اپراتور بیان ...]
ترکیبی از '.دیگر' به دنبال '.اگر".

Elifdef [!]متغیر [اپراتور متغیر ...]
ترکیبی از '.دیگر' به دنبال '.ifdef".

.elifndef [!]متغیر [اپراتور متغیر ...]
ترکیبی از '.دیگر' به دنبال '.ifndef".

.elifmake [!]هدف [اپراتور هدف ...]
ترکیبی از '.دیگر' به دنبال '.ifmake".

elifnmake [!]هدف [اپراتور هدف ...]
ترکیبی از '.دیگر' به دنبال '.ifnmake".

. endif پایان بدن مشروط.

La اپراتور ممکن است یکی از موارد زیر باشد:

|| منطقی OR.

&& منطقی و تقدم بالاتر از «||».

همانطور که در C، bmake فقط یک شرط را تا آنجا که برای تعیین آن ضروری است ارزیابی می کند
ارزش. ممکن است از پرانتز برای تغییر ترتیب ارزیابی استفاده شود. عملگر بولی!'
ممکن است برای نفی منطقی یک شرط کامل استفاده شود. از اولویت بالاتری برخوردار است
'&&".

ارزش بیان ممکن است یکی از موارد زیر باشد:

مشخص نام یک متغیر را به عنوان آرگومان می گیرد و اگر متغیر بوده است آن را درست ارزیابی می کند
تعریف شده است.

ساخت نام هدف را به عنوان آرگومان در نظر می گیرد و اگر هدف درست بود آن را درست ارزیابی می کند
به عنوان بخشی از bmakeخط فرمان یا به عنوان هدف پیش فرض اعلام شد
(به طور ضمنی یا صریح، ببینید .اصلی) قبل از خط حاوی
مشروط

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

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

هدف نام هدف را به عنوان آرگومان در نظر می گیرد و اگر هدف بوده است به درستی ارزیابی می کند
تعریف شده است.

دستورات
نام هدف را به عنوان آرگومان در نظر می گیرد و اگر هدف بوده است به درستی ارزیابی می کند
تعریف شده و دارای دستورات مرتبط با آن است.

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

چه زمانی bmake در حال ارزیابی یکی از این عبارات شرطی است و با یک (سفید-
با فاصله از هم جدا شده است) کلمه ای که آن را تشخیص نمی دهد، چه عبارت «ساخت» یا «تعریف شده» است
بسته به شکل شرطی به آن اعمال می شود. اگر فرم ".ifdef
'.ifndef'، یا '.اگرعبارت "تعریف شده" اعمال می شود. به همین ترتیب، اگر فرم باشد
'.ifmake' یا '.ifnmake, laعبارت "make" اعمال می شود.

اگر شرطی به درستی ارزیابی شود، تجزیه makefile مانند قبل ادامه می یابد. اگر این
به نادرست ارزیابی می شود، خطوط زیر حذف می شوند. در هر دو مورد این تا زمانی ادامه می یابد
'.دیگر' یا '. endif' یافت می شود.

حلقه‌های For معمولاً برای اعمال مجموعه‌ای از قوانین در فهرستی از فایل‌ها استفاده می‌شوند. نحو یک
حلقه for است:

.برای متغیر [متغیر ...] in بیان
⟨قوانین بسازی⟩
پایان برای

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

نظرات


نظرات با یک کاراکتر هش ('#') شروع می شود، در هر جایی به جز در خط فرمان پوسته، و
تا انتهای یک خط جدید بدون فرار ادامه دهید.

ویژه منابع (ویژگی های)


EXEC Target هرگز قدیمی نیست، اما به هر حال همیشه دستورات را اجرا کنید.

.چشم پوشی هر گونه خطا از دستورات مرتبط با این هدف را نادیده بگیرید، دقیقاً مثل اینکه
قبل از همه آنها یک خط تیره ('-') قرار داشت.

ساخته شده همه منابع این هدف را به عنوان به روز علامت گذاری کنید.

.ساخت دستورات مرتبط با این هدف را حتی اگر -n or -t گزینه ها بودند
مشخص شده. معمولاً برای علامت گذاری بازگشتی استفاده می شود bmakes.

متا یک فایل متا برای هدف ایجاد کنید، حتی اگر به عنوان پرچم گذاری شده باشد .PHONY, .ساخت، یا
.ویژه. استفاده همراه با .ساخت محتمل ترین مورد است در "متا"
در حالت، اگر فایل متا موجود نباشد، هدف قدیمی است.

NOMETA یک فایل متا برای هدف ایجاد نکنید. فایل های متا نیز برای ایجاد نمی شوند
.PHONY, .ساخت، یا .ویژه اهداف.

NOMETA_CMP
هنگام تصمیم گیری در مورد قدیمی بودن هدف، تفاوت در دستورات را نادیده بگیرید. این هست
اگر دستور حاوی مقداری باشد که همیشه تغییر کند مفید است. اگر تعداد
دستورات تغییر می کنند، هرچند، هدف همچنان قدیمی خواهد بود. همان اثر
برای هر خط فرمانی که از متغیر استفاده می کند اعمال می شود OODATE، که می تواند برای استفاده شود
این هدف حتی زمانی که نیاز یا مطلوب نیست:

رد کردن-مقایسه-برای-برخی:
@echo این مورد مقایسه خواهد شد
@echo این ${.OODATE:M.NOMETA_CMP} نخواهد بود
@echo این نیز مقایسه خواهد شد

La :M الگو هرگونه بسط متغیر ناخواسته را سرکوب می کند.

NOPATH هدف را در دایرکتوری های مشخص شده جستجو نکنید .مسیر.

.NOTMAIN به طور معمول bmake اولین هدفی را که با آن روبرو می شود به عنوان هدف پیش فرض انتخاب می کند
اگر هدف مشخص نشده باشد ساخته شده است. این منبع از وجود این هدف جلوگیری می کند
انتخاب شد.

.اختیاری
اگر هدفی با این ویژگی مشخص شده باشد و bmake نمی توانم بفهمم چگونه ایجاد کنم
آن، این واقعیت را نادیده می گیرد و فرض می کند که فایل مورد نیاز نیست یا از قبل وجود دارد.

.PHONY هدف با فایل واقعی مطابقت ندارد. همیشه در نظر گرفته می شود
قدیمی است، و با آن ایجاد نخواهد شد -t گزینه. پسوند - تبدیل
قوانین اعمال نمی شود .PHONY اهداف.

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

بازگشتی
مترادف برای .ساخت.

.بی صدا هیچ یک از دستورات مرتبط با این هدف را دقیقاً مانند آنها تکرار نکنید
قبل از همه یک علامت در ('@') بود.

.استفاده کنید هدف را تبدیل کنید bmakeنسخه ماکرو. هنگامی که هدف به عنوان یک استفاده می شود
منبع برای هدف دیگر، هدف دیگر دستورات، منابع و
صفات (به جز .استفاده کنید) از منبع. اگر هدف از قبل دستوراتی داشته باشد،
la .استفاده کنید دستورات هدف به آنها اضافه می شود.

.استفاده از قبل
دقیقا شبیه .استفاده کنید، اما قبل از .استفاده از قبل دستورات هدف به هدف

.صبر کن If .صبر کن در یک خط وابستگی ظاهر می شود، منابع قبل از آن قبلا ساخته شده اند
منابعی که در این خط موفق می شوند. از آنجایی که وابستگی فایل ها نیست
ساخته شده تا زمانی که خود فایل بتواند ساخته شود، این امر نیز وابسته ها را متوقف می کند
ساخته می شوند مگر اینکه برای شاخه دیگری از درخت وابستگی مورد نیاز باشند. بنابراین داده شده است:

x: a .wait b
اکو x
a:
پژواک الف
ب: ب1
پژواک ب
b1:
اکو b1

خروجی همیشه 'a'، 'b1'، 'b'، 'x' است.
دستور تحمیل شده توسط .صبر کن فقط مربوط به ساخت های موازی است.

ویژه اهداف


اهداف ویژه ممکن است با اهداف دیگر گنجانده نشوند، یعنی باید تنها هدف باشند
مشخص شده.

.شروع هر خط فرمان متصل به این هدف قبل از هر چیز دیگری اجرا می شود
انجام شده.

. پیش فرض
این یک نوع است .استفاده کنید قانون برای هر هدف (که فقط به عنوان منبع استفاده می شود) که
bmake نمی توانم راه دیگری برای ایجاد پیدا کنم. فقط از پوسته اسکریپت استفاده می شود.
La IMPSRC متغیر هدفی که به ارث می رسد . پیش فرضدستورات بر روی تنظیم شده است
نام خود هدف

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

خطا هر خط فرمان متصل به این هدف زمانی اجرا می شود که هدف دیگری با شکست مواجه شود.
La .ERROR_TARGET متغیر روی هدفی که شکست خورده تنظیم می شود. همچنین ببینید
MAKE_PRINT_VAR_ON_ERROR.

.چشم پوشی هر یک از منابع را با علامت علامت گذاری کنید .چشم پوشی صفت. اگر هیچ منبعی مشخص نشده باشد،
این معادل مشخص کردن است -i گزینه.

وقفه
If bmake قطع می شود، دستورات این هدف اجرا می شود.

.اصلی اگر هیچ هدفی مشخص نشده باشد چه زمانی bmake فراخوانی می شود، این هدف ساخته خواهد شد.

.MAKEFLAGS
این هدف راهی برای مشخص کردن پرچم‌ها برای آن فراهم می‌کند bmake زمانی که از makefile استفاده می شود.
پرچم‌ها به‌گونه‌ای هستند که گویی روی پوسته تایپ شده‌اند -f گزینه تاثیری نخواهد داشت

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

غیر موازی
غیرفعال کردن حالت موازی

NO_PARALLEL
مترادف برای غیر موازی، برای سازگاری با سایر انواع pmake.

.OBJDIR منبع یک مقدار جدید برای ' است.OBJDIR'. اگر وجود داشته باشد، bmake اراده چدیر(2) به آن
و مقدار ' را به روز کنید.OBJDIR".

.سفارش اهداف نامگذاری شده به ترتیب ساخته می شوند. این سفارش، اهدافی را به آن اضافه نمی کند
لیست اهدافی که باید ساخته شوند از آنجایی که وابستگان یک هدف ساخته نمی شوند
تا زمانی که هدف بتواند ساخته شود، مگر اینکه «a» توسط بخش دیگری از آن ساخته شود
نمودار وابستگی، حلقه وابستگی زیر است:

.ORDER: ba
ب: الف

دستور تحمیل شده توسط .سفارش فقط مربوط به ساخت های موازی است.

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

.مسیر.پسوند
پسندیدن .مسیر اما فقط برای فایل هایی با پسوند خاص اعمال می شود. پسوند باید
قبلا با اعلام شده اند پسوندها.

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

. گرانبها
درخواست . گرانبها به هر منبع مشخصی نسبت داده شود. اگر هیچ منبعی وجود ندارد
مشخص شده، . گرانبها ویژگی برای هر هدف در فایل اعمال می شود.

.پوسته پوسته را تنظیم می کند که bmake برای اجرای دستورات استفاده خواهد کرد. منابع مجموعه ای از
فیلد = ارزش جفت.

نام این حداقل مشخصات است که برای انتخاب یکی از داخلی ها استفاده می شود
مشخصات پوسته؛ sh, kshو csh.

مسیر مسیر پوسته را مشخص می کند.

hasErrCtl نشان می دهد که آیا پوسته خروج در صورت خطا را پشتیبانی می کند یا خیر.

بررسی دستور روشن کردن بررسی خطا.

چشم پوشی از دستور غیرفعال کردن بررسی خطا.

از دست فرمان روشن کردن بازتاب دستورات اجرا شده.

ساکت فرمان خاموش کردن بازتاب دستورات اجرا شده.

فیلتر خروجی پس از صدور فیلتر می شود ساکت فرمان به طور معمول است
یکسان با ساکت.

errFlag پرچم برای عبور از پوسته برای فعال کردن بررسی خطا.

echoFlag پرچم برای عبور از پوسته برای فعال کردن بازتاب فرمان.

خط جدید رشته به معنای واقعی کلمه برای عبور از پوسته که منجر به یک خط جدید می شود
نویسه زمانی که خارج از هر کاراکتر نقل قول استفاده می شود.
مثال:

SHELL: name=ksh path=/bin/ksh hasErrCtl=true \
check="set -e" ignore="set +e" \
echo="set -v" quiet="set +v" filter="set +v" \
echoFlag=v errFlag=e newline="'\n'"

.بی صدا درخواست .بی صدا به هر منبع مشخصی نسبت داده شود. اگر هیچ منبعی مشخص نشده باشد،
la .بی صدا ویژگی به هر دستوری در فایل اعمال می شود.

.کهنه این هدف زمانی اجرا می‌شود که یک فایل وابستگی حاوی ورودی‌های قدیمی باشد ALLSRC
به نام آن فایل وابستگی تنظیم کنید.

پسوندها
هر منبع یک پسوند را مشخص می کند bmake. اگر هیچ منبعی مشخص نشده باشد، هر کدام
پسوندهای قبلاً مشخص شده حذف می شوند. امکان ایجاد پسوند-
قوانین تحول

مثال:

.پسوندها: .o
.co:
cc -o ${.TARGET} -c ${.IMPSRC}

محیط زیست


bmake از متغیرهای محیطی زیر در صورت وجود استفاده می کند: MACHINE، MACHINE_ARCH،
MACHINE_MULTIARCH، MAKE، MAKEFLAGS، MAKEOBJDIR، MAKEOBJDIRPREFIX، MAKESYSPATH، PWD، و
TMPDIR.

MAKEOBJDIRPREFIX و MAKEOBJDIR ممکن است فقط در محیط یا در خط فرمان تنظیم شوند
bmake و نه به عنوان متغیرهای makefile. توضیحات " را ببینید.OBJDIR' برای جزئیات بیشتر.

با استفاده از خدمات onworks.net از pmake آنلاین استفاده کنید


سرورها و ایستگاه های کاری رایگان

دانلود برنامه های ویندوز و لینوکس

دستورات لینوکس

Ad




×
تبلیغات
❤️اینجا خرید کنید، رزرو کنید یا بخرید - رایگان است، به رایگان ماندن خدمات کمک می‌کند.