انگلیسیفرانسویاسپانیایی

Ad


فاویکون OnWorks

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

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

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

برنامه:

نام


makepp_incompatibilities -- ناسازگاری های makepp و GNU make

شرح


Makepp طوری طراحی شد که تا حد امکان به ساخت گنو نزدیک باشد
(<http://www.gnu.org/software/make/manual/make.html>). ابزارهای خودکار گنو
(<http://www.gnu.org/software/automake/manual/automake.html>)، CMake
(<http://www.cmake.org/>)، Premake (http://industriousone.com/premake> و نظر را ببینید
زیر) یا سیستم های ساخت قدیمی دست ساز باید با makepp قابل ساخت باشند. این چنین است
می توانید بدون زحمت پروژه ها را مهاجرت کنید. یا اگر نمی خواهید از همه آنها لذت ببرید
مزایای makepp (مثلاً دیگران همچنان می توانند پروژه شما را با ساخت GNU بسازند) در حالی که شما
از مزیت قابلیت اطمینان برای توسعه خود سود ببرید.

با این حال، به دلیل تفاوت در فلسفه، برخی از ساخت گنو یا ساخت POSIX
(<http://pubs.opengroup.org/onlinepubs/009695399/utilities/make.html>) ویژگی ها نمی توانند باشند
پشتیبانی. چند مورد به دلیل اینکه وقت نداریم اجرا نشده است. بیشتر
تفاوت ها با ساخت گنو کاملاً فنی هستند و به ندرت باعث ایجاد مشکل می شوند. افسوس که
راه‌حل‌ها برای کاستی‌های ساخت سنتی هر روز پیچیده‌تر می‌شوند،
و میک را سخت می کنند.

به طور خلاصه، اگر خارج از جعبه ساخته نشد، سعی کنید:

makepp --no-warn makepp_simple_concatenation=1 makepp_percent_subdirs=1 \
--build-check=target_newer --Last-chance-rules --no-Remake-Makefiles

اگر موفق شد، می توانید سعی کنید آن استدلال ها را یکی یکی حذف کنید. اما اگر شکست بخورد،
سعی کنید اضافه کنید:

--سنتی بازگشتی-ساخت

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

اجبار کردن بیش POSIX or گنو ساخت سازگاری


در اینجا برخی از احتمالات خط فرمان برای به کار انداختن بسیاری از سیستم های ساخت قدیمی وجود دارد
بدون اصلاح آنها باعث می شوند makepp رفتار گنو make را دقیقاً تقلید کند.

سازگاری از طريق la گزینه: "--build-check=target_newer"
به‌طور پیش‌فرض، makepp در صورت داشتن هر یک از وابستگی‌ها، سعی می‌کند همه اهداف را بازسازی کند
از آخرین ساخت تغییر کرده است، یا اگر دستور تغییر کرده است (به makepp_build_check مراجعه کنید
جزئیات). این معمولاً همان چیزی است که شما می خواهید. با این حال، گاهی اوقات شما هدف را نمی خواهید
اگر جدا از کنترل makepp (مثلاً با ویرایش) اصلاح شده باشد، دوباره ساخته شود
یا با اجرای دستی یک برنامه برای ساخت فایل). می توانید makepp را مجبور به استفاده از آن کنید
الگوریتم ساخت سنتی، که تنها زمانی بازسازی می شود که هر یک از اهداف جدیدتر از الگوریتم باشد
وابستگی ها، با افزودن این گزینه به خط فرمان.

سازگاری از طريق la گزینه: "--dont-build=config.status"
بسته هایی وجود دارند که سعی می کنند خود را به صورت خودکار پیکربندی کنند، یا کارهای دیگری را انجام دهند که gmake
نادیده می گیرد مگر اینکه از او خواسته شود، مانند:

config.status: پیکربندی
./config.status --بررسی مجدد

پیکربندی: configure.in aclocal.m4
خودکار

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

سازگاری از طريق la گزینه: "--قوانین-آخرین فرصت"
قوانین پیش‌فرض (قوانین الگوی بدون وابستگی الگو) معمولاً پشتیبانی نمی‌شوند.
Makepp تمام قوانین را بر اساس فایل های موجود نمونه سازی می کند، به طوری که از همه آنها آگاه است
فایلی که می توان تولید کرد افسوس که از این طریق نمی داند چگونه یک الگو را نمونه سازی کند
قانون بدون وابستگی به الگو مکانیسم :last_chance تا حدی آن را برطرف می کند.
در جایی که این برای فایل‌های قدیمی قدیمی به اندازه کافی خوب است، این گزینه اجازه می‌دهد آن را در سطح جهانی روشن کنید.

سازگاری از طريق la گزینه: "--بدون هشدار"
این یکی نتیجه را بهبود نمی بخشد. Makepp برای بسیاری از چیزها پیام هشدار می دهد
که یونیکس سنتی آن را بدون لرزش می پذیرد. این به این دلیل است که وجود دارد
راه های بهتری برای انجام آنها با makepp. اگر این هشدارها شما را آزار می دهد، می توانید آنها را خاموش کنید
با این گزینه

سازگاری از طريق la گزینه: "--hybrid-recursive-make"
فراخوانی بازگشتی ساخت اغلب به عنوان یک عمل ناامن در نظر گرفته می شود (به «بهتر» مراجعه کنید
سیستم برای ساخت های سلسله مراتبی" در makepp برای جزئیات)، اما آنها بسیار رایج هستند
فایل های موجود Makepp از ساخت بازگشتی برای سازگاری با عقب پشتیبانی می کند. برای جدید
makefiles، بهتر است از عبارت "load_makefile" یا از عبارت ضمنی makepp استفاده کنید.
مکانیزم بارگذاری فایل های makefile

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

این در اکثر موارد کار می کند، اما ممکن است چندین فایل را از یک فایل فراخوانی نکنید
دایرکتوری، به عنوان مثال، موارد زیر کار نخواهد کرد:

هدف: وابستگی ها
$(MAKE) -f اهداف other_makefile

در این مورد makepp متوجه می شود که در حال بارگذاری یک فایل جدید است و شکایت می کند. با این گزینه
در عوض به روش سنتی ساختن از فایل‌های اضافی در داخل بازخواهد گشت
هر کدام یک فرآیند makepp جداگانه.

توجه: بارگذاری فنی چندین فایل میک‌فایل مشکلی نخواهد داشت، اما معمولاً این مشکل را دارند
همان نام های هدف ساختگی جدا نگه داشتن آن به معنای طراحی مجدد کامل آرایش است
داخلی با این حال، این کار خواهد کرد، اما معادل نیست:

هدف: وابستگی ها
cd subdir &&$(MAKE) -f other_makefile targets

سازگاری از طريق la گزینه: "--سنتی- بازگشتی-ساخت"
گاهی اوقات گزینه قبلی کافی نیست، به خصوص اگر از فراخوان های بازگشتی استفاده شود
گزینه های متناقض Makepp تنها از یک مجموعه از گزینه های جهانی استفاده می کند، بنابراین یک submake چنین نیست
اجازه داده شد تا آنها را تغییر دهد، زیرا این موارد مربوط به سایر فایل‌ها نیز می‌شود.

افزودن این گزینه به خط فرمان، عوارض جانبی نامطلوب زیر را به همراه دارد:

· می سازد بازگشتی به صورت داخلی به صورت موازی اجرا نمی شود، حتی اگر والد انجام دهد.
برخلاف gmake هیچ هماهنگی کلی بین تعداد فرآیندها وجود ندارد. این اراده
اجرا نشود زیرا این شیوه کار هدف طراحی makepp نیست.

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

· هر فرآیند ساخت بازگشتی، فایل log خود را در دایرکتوری فراخوانی می کند
به جای تولید یک فایل log برای کل ساخت.

· از آنجایی که makepp معمولاً بیشتر از سنتی ساخته می شود که لازم می بیند، و از آنجایی که بسیاری از آنها
سیستم‌های ساخت تماس‌های بازگشتی را در همه جهات فراهم می‌کنند، این ممکن است منجر به بی‌انتها شود
بازگشت Makepp پس از 50 دور ترمز را می کشد و به شما می گوید که چگونه آن را افزایش دهید
که، در صورتی که شما واقعاً چنین لانه عمیقی دارید.

حتی با گزینه "--traditional-recursive-make"، متغیرهای محیطی تغییر می کنند
«MAKEOVERRIDES» و «MFLAGS» راه‌اندازی نشده‌اند و نادیده گرفته می‌شوند، بنابراین فایل‌های ساخته شده وابسته به
آنها کار نخواهند کرد

A پیش ساخت تولید makefile فقط یک بسته بندی خنده دار برای فراخوانی فرعی در همان است
فهرست راهنما. اگر هدف پروژه ای دارید XYZ یک خط مانند خواهد داشت

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

در این حالت می توانید با فراخوانی مستقیم از گزینه "--traditional-recursive-make" اجتناب کنید
makepp با آن "-f XYZ.make" گزینه.

سازگاری بدون la گزینه: "--jobs=n"
گاهی اوقات فایل‌های قدیمی تمام وابستگی‌ها را با تکیه بر ترتیب فهرست نمی‌کنند
اعدام برای ساختن آنها به موقع در این شرایط makepp ممکن است موفق به فراخوانی یک قانون از قبل شود
وابستگی های آن همه ساخته شده اند. سپس نتایج ممکن است با کمتر یا حتی بدون بهتر باشد
اجرای موازی

سازگاری از طريق la متغیر: "makepp_simple_concatenation=1"
جایگزینی به سبک Rc روش پیش‌فرض makepp برای جایگزینی متغیرها در متن است
رشته‌ها، زیرا به ندرت فایل‌های قدیمی را می‌شکند و اغلب در موارد جدید مفید است
فایل های ایجاد شده با این حال، ناسازگاری های گاه به گاه را در جایگزینی ایجاد می کند
متغیرهایی که با فاصله احاطه نشده اند. مثلا،

INCLUDE_PREFIX := -I/some/include/dir -I
شامل := $(INCLUDE_PREFIX)/other/include/dir

اگر rc- "INCLUDES" را روی "-I/some/include/dir/other/include/dir -I/other/include/dir" تنظیم می کند.
جایگزینی سبک فعال است، در حالی که GNU make آن را تنظیم می کند
"-I/some/include/dir -I/other/include/dir". به عنوان مثال، هنگام کامپایل Redis 2.6.5 سعی می کند
"printfgcc" را اجرا کنید. چنین ترکیب خنده‌داری از دو دستور، نشانه‌ای قوی است که
این متغیر برای بازگشت به معنای شناسی مورد نیاز است.

همچنین یک ناسازگاری در مدیریت فضای خالی در یک متغیر وجود دارد:

null :=
T := -o $(null) # T حاوی -o و یک فاصله است.
OUTFILE = $(T) outfile

اگر جایگزینی به سبک rc فعال باشد، "OUTFILE" را روی "-ooutfile" تنظیم می کند، در حالی که ساخت گنو
آن را روی "-o outfile" تنظیم می کند.

هر دوی این ناسازگاری ها با تنظیم "makepp_simple_concatenation" حذف می شوند.
متغیر. با این حال، توجه داشته باشید که حتی با "makepp_simple_concatenation"، makepp همچنان
در برخی موقعیت‌ها با فضای خالی به‌صورت ناسازگار برخورد می‌کند:

T := -o # این نظر را حذف نکنید.

گنو مجموعه‌های «T» را می‌سازد تا حاوی «-o» و سپس یک فاصله باشد، در حالی که makepp آن را حذف می‌کند.
به هر حال فضای دنباله دار اگر فضای عقب را می خواهید، باید تنظیم کنید
"makepp_simple_concatenation" و همچنین "T" را با استفاده از تکنیک شامل ساختگی تنظیم کنید
متغیری مانند "null"، همانطور که در بالا نشان داده شده است.

راه حل انتخاب "--no-remake-makefiles"
منبع باز معمولی نیاز به فراخوانی «configure» برای ایجاد فایل‌های ساخت دارد. اما بعد اینها
makefiles می تواند حاوی قوانینی برای بازسازی makefile با فراخوانی برخی از دستورات باشد. Makepp خواهد شد
با خوشحالی مطابق با قانون مطابق و به روز رسانی کنید. اما گاهی اوقات این مضر است، بنابراین
فقط ازش بگذر

سازگاری از طريق la متغیر: "makepp_percent_subdirs=1"
به طور پیش فرض، "%" در یک قانون الگو با دایرکتوری ها مطابقت ندارد. این بدان معنی است که یک قانون مانند
این:

%o: %c
$(CC) $(CFLAGS) -c $(ورودی) -o $(خروجی)

برای فایل هایی مانند "../shared/xyz.c" اعمال نخواهد شد. اگر می خواهید با فایل های موجود مطابقت داشته باشد
زیر شاخه ها را نیز، سپس متغیر "makepp_percent_subdirs=1" را در خط فرمان تنظیم کنید.
یا نزدیک به ابتدای یک فایل ایجاد شده.

سازگاری از طريق la محیط متغیر: $MAKEPP_IGNORE_OPTS
گاهی اوقات فراخوان های بازگشتی قدیمی گزینه هایی را ارسال می کنند که makepp آنها را نمی فهمد.
امیدواریم این گزینه مهم نباشد، اما از اجرای makepp جلوگیری می کند. با این
متغیر محیطی می‌توانید از makepp بخواهید که گزینه‌های خاصی را بی‌صدا نادیده بگیرد. ارزش
باید فهرستی از گزینه‌ها با فاصله از هم باشد که می‌تواند در 4 نوع باشد:

--طولانی=x
یک گزینه طولانی که انتظار استدلال دارد. این واقعیت باید از طریق مساوی اعلام شود
علامت، اگرچه استفاده واقعی ممکن است با فاصله سفید نیز جدا شود، یا "--long=bla" یا
"--بله بلند".

--طولانی
یک گزینه طولانی بدون استدلال.

-sx گزینه کوتاهی که انتظار آرگومان دارد. این واقعیت را باید با افزودن اعلام کرد
چیزی مستقیماً بعد از گزینه، اگرچه ممکن است استفاده واقعی نیز با آن جدا شود
فضای خالی، یا "-sbla" یا "-s bla".

-s یک گزینه کوتاه بدون استدلال.

مثلاً گزینه -R makepp را یکی یکی بدون آرگومان لغو کنید و اشکال زدایی gmake را بپذیرید
گزینه با آرگومان:

صادر کردن MAKEPP_IGNORE_OPTS='-R --debug=x'

ناسازگاری که نیاز makefile تغییرات


· Makefiles که به صراحت make را فراخوانی می کنند، از makepp جلوگیری می کنند تا همه چیز را خودش بسازد.
«ExtUtils::MakeMaker» خود الاس پرل دومین مورد از دو شکل زیر را انجام می دهد.
این اشتباه تا نسخه 6.56 (Perl 5.12.1):

زیرمجموعه:
cd subdir; ساختن

ساختن = ساختن

· تنظیم متغیر "VPATH" روی مقداری به طور ضمنی "vpath % value" را فراخوانی می کند. "vpath"
عبارات با مکانیسم مخزن تقلید می شوند. بنابراین، جایی که gmake جایگزین می شود
مسیر فایل موجود در مسیر vpath، makepp آن را به صورت نمادین به آن پیوند می دهد
جایی که مورد نیاز است. بنابراین makepp یک رشته اصلاح نشده ارائه می دهد که معمولاً همینطور است
مشکلی نیست.

اهداف در مسیر vpath پشتیبانی نمی شوند. (Gmake آنها را در نظر می گیرد اگر جدیدتر از
وابستگی های آنها، اما در غیر این صورت، هدف در فهرست فعلی دوباره ایجاد می شود
-- نسبتاً ناسازگار است.) Unsetting vpaths پشتیبانی نمی شود.

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

· مجموعه قوانین ضمنی داخلی تا حدودی با قوانین ساخت گنو متفاوت است.
اگرچه نام متغیرها تا حد زیادی با هم سازگار هستند. قوانین ساخته شده باید
برنامه های C/C++/Fortran را با موفقیت کامپایل کنید، و در واقع ممکن است قادر به حدس زدن باشد
کتابخانه های مناسب نیز در برخی موارد. پشتیبانی از Modula-2 و RatFor و موارد کمیاب دیگر
زبان‌ها عمداً وجود ندارد، زیرا من مدام با گنو با مشکل مواجه می‌شوم
زمانی که من به طور تصادفی از افزونه های آن زبان ها دوباره استفاده کردم، قوانین make's را رعایت کردم.

· پیشوند عمل "+" بی سر و صدا نادیده گرفته می شود.

· اعضای آرشیو پشتیبانی نمی شوند، و همچنین متغیرهای خودکار مرتبط نیز پشتیبانی نمی شوند
$٪، "$(%D)"، و "$(%F)".

· پشتیبانی از SCCS وجود ندارد.

· فضای خالی پیشرو و انتهایی در تکالیف متغیر نادیده گرفته می شود (حتی اگر
فضای خالی با یک نظر دنبال می شود). برای جزئیات بیشتر در مورد مدیریت فضای خالی
ناسازگاری‌ها، به "فضای فاصله در متغیرها" در makepp_variables مراجعه کنید.

· Makepp سعی نمی کند فایل های موجود با عبارت "include" را بازسازی کند مگر اینکه
makefile حاوی یک قانون برای ساختن آنها قبل از مشاهده عبارت include است.
(با این حال، سعی خواهد کرد که خود فایل را بازسازی کند.) این معمولاً برای این مورد استفاده می شود
مدیریت شامل وابستگی های فایل می شود و با makepp چندان مفید نیست زیرا شما این کار را نمی کنید
به هر حال باید این کار را انجام داد

· متغیر "SHELL" در حال حاضر تا حدی نادیده گرفته شده است. Makepp همیشه استفاده می کند / بن / شل
مگر /usr/xpg4/bin/sh or /sbin/xpg4/sh یافت می شود یا مگر اینکه "SHELL" را صادر کنید
متغیر در میکفایل شما اما اگر این کار را انجام دهید، تجزیه کننده فرمان ممکن است به طور کامل انجام نشود
درک کنید که فرمان پوسته شما چه می کند. در Windows Strawberry یا ActiveState Perl
در عوض باید متغیر SHELL خود را تنظیم کنید قبل از تماس با makepp.

· وابستگی هر چیزی به Makefile هنوز کار می کند، اما معمولاً غیر ضروری است.
این معمولاً برای اجبار به بازسازی در هنگام تغییر گزینه های کامپایل استفاده می شود. Makepp می داند
هنگامی که دستورات ساخت بدون هیچ چیز خاصی در makefile تغییر کرده است. آن را ذخیره می کند
این به صورت فایل به فایل اگر میک‌فایل را تغییر دهید، دقیقاً می‌داند کدام است
فایل ها نیاز به کامپایل مجدد دارند

· فایل های میانی حذف نمی شوند. (زیرا makepp اصرار دارد که همه فایل را داشته باشد
تاریخ‌ها مانند آخرین بیلد باشند، فایل‌های میانی باید همگی باشند
در حال حاضر و یا در غیر این صورت بازسازی رخ خواهد داد.) هیچ وضعیت ویژه ای وجود ندارد
فایل های میانی

· تنها هدف ویژه ای که پشتیبانی می شود ".PHONY" و تا حدی ".SUFFIXES" است. را
باقی مانده به سادگی نادیده گرفته می شوند.

به طور خاص، ساخت گنو دارای اهداف ویژه زیر است:

پسوندها
Makepp ".SUFFIXES" را نادیده می گیرد به جز مورد خاص ".SUFFIXES" بدون هیچ
وابستگی ها مانند این:

پسوندها:

که به آن می گوید هیچ یک از قوانین پیش فرض خود را بارگذاری نکند.

.متوسط، ثانویه، .ارزشمند
هیچ وضعیت خاصی به پرونده های میانی اعطا نمی شود و بنابراین این اهداف وجود ندارد
معنی دار.

.چشم پوشی
این هدف نادیده گرفته می شود. اگر می خواهید خطاها را نادیده بگیرید، کلمه "ignore_error" را قرار دهید.
(یا علامت منفی) در مقابل فرمانی که وضعیت خروج آن نادیده گرفته شود.

.بی صدا
این هدف نادیده گرفته می شود. اگر می خواهید دستورات اکو نشوند، کلمه "noecho" را قرار دهید.
(یا کاراکتر "@") در مقابل دستوری که قرار نیست تکرار شود،
یا از گزینه "--silent" برای makepp استفاده کنید.

DELETE_ON_ERROR
EXPORT_ALL_VARIABLES
NOEXPORT
POSIX
. پیش فرض
این اهداف پشتیبانی نمی شوند و به سادگی نادیده گرفته می شوند.

· توابع ساخت گنو "eval"، "طعم" و "ارزش" در حال حاضر پشتیبانی نمی شوند. شما
با "$[...]" می‌تواند به همان چیزی که eval را به روشی مستقیم‌تر دست یابد.
بسط متغیر یا تابع

· قوانین دو نقطه به طور کامل پشتیبانی نمی شود. (آنها نمی توانند باشند: در پارادایم makepp،
نمی تواند بیش از یک راه برای به روز رسانی یک هدف وجود داشته باشد.) در حال حاضر، هر یک متوالی
قانون دو نقطه برای یک هدف معین به سادگی رشته فرمان و وابستگی آن را اضافه می کند
فهرستی به رشته فرمان و لیست وابستگی برای این هدف. به عنوان مثال، اگر شما
این را بنویس:

الف :: ب
&گربه b -oa

# بعداً در پرونده شما:
الف :: ج
&cat c -o >>a

آن هست کاملا مثل اینکه نوشته بودی

الف: قبل از میلاد
&گربه b -oa
&cat c -o >>a

مطمئناً این چیزی نیست که قوانین دو روده برای آن در نظر گرفته شده است، و همیشه هم نخواهد بود
کار می کند، اما برای اهدافی مانند "تمیز" یا برای همه چیزهایی که کار می کند
ExtUtils::MakeMaker در فایل های خود قرار می دهد. برای هیچ چیز دیگری روی آن حساب نکنید
نسبت به فایل های قدیمی.

· تابع "$(wildcard )" نه تنها با فایل‌های موجود، بلکه با فایل‌هایی مطابقت دارد
هنوز وجود ندارند، اما قانونی دارند که makepp در آن زمان دیده است
تابع "$(wildcard )" ارزیابی می شود.

· عبارت "define" پشتیبانی می شود، اما مدیریت "@" قبل از آن انجام می شود
متفاوت در حال حاضر در makepp، "@" در مقابل یک متغیر که دارای چند خط است
مقدار فقط پژواک خط اول را سرکوب می کند. مثلا،

خطوط اکو را تعریف کنید
&echo line1 -o $@
&echo line2 -o>>$@
endf

x:
@$(خطوط پژواک)

چاپ "&echo line2" را همانطور که در ساخت گنو انجام می دهد متوقف نمی کند. آن را تنها
توقف چاپ "&echo line1".

· Makepp از متغیرهای محیطی زیر پشتیبانی نمی کند (آنها را تنظیم نمی کند،
و فقط آنها را نادیده می گیرد):

MAKEOVERRIDES
MFLAGS

ناسازگاری in سفارش of بیان توسعه
· در makepp، اقدامات قوانین قبل از اینکه همه وابستگی ها تضمین شوند، گسترش می یابند
ساخته شده اند. شما می توانید با تغییر قوانینی مانند زیر، این مشکل را حل کنید:

فو: بار
genfoo < $(نوار گربه صدفی)

به این:

فو: بار
genfoo < "گربه نوار".

یا این که فایل را در حین گسترش می سازد:

فو: بار
genfoo < $(&cat $(نوار ساخت))

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

· اگرچه من استفاده از این را ندیده‌ام، GNU make به موارد زیر اجازه می‌دهد:

کولون =:
a$(دونقطه) ب
پژواک $^

Makepp "$(colon)" را خیلی دیر گسترش می دهد تا کار کند. با این حال آن را ارائه می دهد
نحو جایگزین «$[colon]»، که می‌تواند بسیار بیشتر از ساخت گنو انجام دهد، زیرا چنین است
خیلی زود گسترش یافت

"$(ساختن)" ممکن است شامل فضاها
در یک makepp حذف شده یا اگر به نظر می رسد پلتفرم از شروع یک اسکریپت Perl پشتیبانی نمی کند
با عدد جادویی یا با "--traditional-recursive-make" این متغیر حداقل شامل خواهد شد
یک فضا در هنگام استفاده از آن به عنوان دستور مشکلی نیست. اما هنگام عبور از آن به عنوان یک
پارامتر بدون نقل قول به یک اسکریپت (همانطور که سیستم ساخت Perl 5.14.0 انجام می دهد)، آن را پاره می کند.
جدا به پارامترهای جداگانه، که منجر به سردرگمی می شود. بنابراین به عنوان یک پارامتر ایمن تر است
آن را به عنوان '$(MAKE)' نقل قول کنید. که سازگاری رو به عقب را از بین نمی برد.

هدف خاص تکالیف نکن رواج دادن
متغیرهای هدف خاص Makepp کمی با GNU make تفاوت دارند
فقط به قانون مربوط به یک فایل ذکر شده اعمال شود، و نه برای هیچ یک از پیشینیان آن. دیدن
تکالیف خاص هدف

پرانتز or پرانتز نکن لانه
Makepp عبارات را در اولین پرانتز یا پرانتز منطبق به پایان می رساند. به جای این

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

شما باید از یکی از اینها استفاده کنید

${somefunction ... ( ) ...} # GNU make compatible
$((بعضی تابع ... ( ) ...)) # پسوند Makepp

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

صغیر نقطه
وابستگی های الگو با اهداف ساختگی مطابقت ندارند
%.a: %.b; ...
$(xb ساختگی): ; ... # راهی برای ساخت xa ارائه نمی دهد

نظرات خطوط ادامه ندارند
# این هست \
نظر 2 خطی نیست

فرمان خط ناسازگاری


Makepp از چند گزینه خط فرمان مفیدتر make پشتیبانی می کند. با این حال موارد زیر
پشتیبانی نمی شوند:

-d یا --debug
-f -
اشیاء makefil داخلی Makepp به اشیاء فایل مرتبط هستند، بنابراین نمی تواند آن را مدیریت کند
stdin.

-i
-l یا --load-average یا --max-load
گزینه "-m" Makepp -m مربوط به انتخاب روش امضا است، در حالی که گنو make
نادیده می گیرد -m.

-p یا --print-data-base
-q یا --سوال
-R یا --no-builtin-variables
گزینه "-R" Makepp در واقع کاری کاملا متفاوت انجام می دهد.

-S --بدون ادامه رفتن یا --توقف
گزینه "--stop" پس از یادگیری همه قوانین، makepp را متوقف می کند (به خواب می برد).
می تواند به ویرایش ادامه دهد.

-t یا ---لمس
-w یا --print-directory
این به طور خودکار اتفاق می افتد.

--warn-undefined-variables

اگر کسی اهمیت دهد می توان برخی از این موارد را به راحتی پشتیبانی کرد.

متغیر ناسازگاری


Makepp در $PATH به دنبال یک فرمان منطبق برای بازگرداندن متغیرهایی مانند "$(CC)" یا
"$(CXX)"، در حالی که ساخت گنو دارای پیش فرض های ثابت است. همچنین makepp به "gcc" و ترجیح می دهد
"g++" در حالی که به طور شگفت انگیزی گنو برای اولی "cc" برمی گرداند، اما برای
دومی. می توانید این موارد را در makefile، در خط فرمان یا با صادرات a لغو کنید
متغیری به همین نام قبل از فراخوانی makepp.

با استفاده از خدمات onworks.net از makepp_incompatibilities به صورت آنلاین استفاده کنید


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

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

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

Ad