.TH "icmbuild" "1" "1992\-2025" "icmake\&.13\&.00\&.03" "Icmake\(cq\&s generic program maintenance facility" .PP .SH "نام (NAME)" icmbuild \- ابزاری عمومی برای نگهداری برنامه‌های C++/C .PP .SH "خلاصه دستور (SYNOPSIS)" \fIicmbuild\fP [\-h] [\-c] \fIargs\fP .PP .SH "توضیحات (DESCRIPTION)" .PP \fIIcmbuild\fP یک برنامه کوچک \fBC++\fP است که \fBicmake\fP(1) را برای انجام نگهداری برنامه، بر اساس آنچه در اسکریپت \fIicmbuild\fP (معمولاً واقع در \fI/usr/libexec/icmake\fP) تعریف شده است، فراخوانی می‌کند\&. .PP اقدامات \fIicmbuild\fP از طریق یک فایل پیکربندی (\fIicmconf\fP) که باید در دایرکتوری محل درخواست نگهداری برنامه موجود باشد، تنظیم می‌شود\&. این فایل به‌طور خودکار توسط \fBicmstart\fP(1) نصب می‌گردد\&. برای جزئیات بیشتر درباره این فایل به صفحه راهنمای \fBicmconf\fP(7) مراجعه کنید\&. .PP \fIIcmbuild\fP فرض می‌کند که کدهای منبع شما در دایرکتوری کاری فعلی و زیرشاخه‌های آن قرار دارند\&. فایل \fIicmconf\fP در توزیع \fBicmake\fP(1) نمونه‌ای از یک فایل \fIicmconf\fP را ارائه می‌دهد که می‌تواند توسط \fIicmbuild\fP استفاده شود\&. در آن مثال فرض شده است که یک پروژه \fBC++\fP نگهداری می‌شود، اما نگهداری برنامه برای پروژه‌های دیگر مثلاً \fBC\fP نیز به‌آسانی قابل پیکربندی است\&. اگر \fIicmbuild\fP فراخوانی شود اما \fIicmconf\fP در دسترس نباشد، خلاصه‌ای از نحوه استفاده را نمایش داده و سپس خاتمه می‌یابد\&. .PP \fIIcmbuild\fP() نگهداری تمام کدهای منبع را در هر یک از زیردایرکتوری‌های نام‌برده در فایل \fICLASSES\fP و همچنین تمام منابع موجود در دایرکتوری کاری فعلی مدیریت می‌کند\&. «نگهداری» شامل کامپایل تمام فایل‌های منبع کامپایل‌نشده، کامپایل مجدد فایل‌های منبع تغییریافته، نگهداری اختیاری کتابخانه و در صورت تمایل ساخت یک هدر از پیش کامپایل‌شده منفرد (Single Pre-Compiled Header یا SPCH) و کامپایل چندنخی فایل‌های منبع است که منجر به کاهش چشمگیر زمان کامپایل سورس‌ها می‌شود\&. .PP هنگامی که فایل‌های منبع کامپایل می‌شوند، فایل‌های شیء حاصل می‌شوند که ممکن است در یک کتابخانه ذخیره گردند، و سپس فایل شیء تابع \fImain\fP برنامه با آن پیوند (link) داده می‌شود\&. همچنین امکان مشخص کردن کتابخانه‌های اضافی برای پیوند خوردن برنامه با آن‌ها وجود دارد\&. .PP اگر کتابخانه‌ای ساخته شود، توسط \fIicmbuild\fP به‌روز نگه داشته می‌شود\&. وقتی یک فایل منبع با موفقیت کامپایل شد، ماژول شیء جدید آن جایگزین ماژول قدیمی در کتابخانه می‌شود\&. در آن نقطه، فایل‌های شیء جداگانه دیگر مورد نیاز نبوده و توسط \fIicmbuild\fP حذف می‌شوند\&. .PP .SH "راه‌اندازی سریع ICMBUILD (KICK\-STARTING ICMBUILD)" .PP برای استفاده از \fIicmbuild\fP به صورت زیر عمل کنید: .IP o برنامه \fIicmbuild\fP را در مسیر (PATH) خود نصب کنید (فرایند نصب \fIicmake\fP باید قبلاً این کار را انجام داده باشد)؛ .IP o فایل \fIicmconf\fP (و احتمالاً فایل \fICLASSES\fP) را در دایرکتوری پایه پروژه خود (یعنی دایرکتوری‌ای که سورس‌های پروژه در آن و زیرشاخه‌های آن قرار دارند) کپی کنید\&. معمولاً این کار از پیش توسط اسکریپت (icmstart) انجام شده است؛ .PP سپس: .IP o دستورات \fI#define\fP را در فایل \fIicmconf\fP بر اساس نیاز خود تغییر دهید؛ .IP .IP o نام‌های زیردایرکتوری‌های حاوی کدهای منبع را در خطوط جداگانه در فایل \fICLASSES\fP وارد کنید .IP توجه داشته باشید که ترتیب کلاس‌های ذکر شده در \fICLASSES\fP مهم \fIاست\fP، به این صورت که نام کلاس‌های (زیردایرکتوری‌های) جدید همیشه می‌توانند به انتهای فایل \fICLASSES\fP اضافه شوند\&. از تغییر ترتیب خطوط در فایل \fICLASSES\fP باید خودداری شود، زیرا این کار به‌احتمال زیاد باعث بازنویسی فایل‌های شیء هم‌نام از دایرکتوری‌های موجود می‌شود\&. .IP اگر تغییر ترتیب ضروری است، ابتدا دستور \fIicmbuild clean\fP را اجرا کنید تا تمام فایل‌هایی که تاکنون توسط \fIicmbuild\fP ایجاد شده‌اند حذف شوند\&. کامپایل مجدد از این جهت لازم است که نام فایل‌های شیء برای شناسایی، شامل شماره ترتیب کلاس‌ها هستند\&. این شماره‌های ترتیبی از تداخل نام فایل‌ها جلوگیری می‌کنند (مثلاً دو کلاس ممکن است از فایلی به نام \fIdata\&.cc\fP استفاده کنند) و به دلیل این پیشوندهای عددی، از جایگزینی فایل \fIx\&.o\fP کلاس \fIA\fP با فایل \fIx\&.o\fP کلاس \fIB\fP جلوگیری می‌شود؛ .IP .IP o دستور \fIicmbuild\fP را آغاز کنید\&. .PP بخش بعدی به حالت‌های عملیاتی \fIicmbuild\fP می‌پردازد\&. .PP .SH "گزینه‌ها (OPTIONS)" .PP دستور \fIIcmbuild\fP سه گزینه را شناسایی می‌کند که تنها یکی از آن‌ها می‌تواند مشخص شود\&. برای اطلاعات بیشتر در مورد اینکه کدام گزینه توسط کدام دستور \fIicmbuild\fP پشتیبانی می‌شود، به بخش بعدی مراجعه کنید\&. .IP o \fI\-h\fP: نمایش اطلاعات نحوه استفاده (که در صورت نبود فایل \fIicmconf\fP در دایرکتوری فعلی نیز به‌طور خودکار نشان داده می‌شود) و پایان دادن به اجرای \fIicmbuild\fP؛ .IP o \fI\-c\fP: پاک کردن صفحه نمایش (با فراخوانی \fItput clear\fP) قبل از شروع فرایند کامپایل؛ .IP o \fI\-s\fP: پیراستن (strip) برنامه یا کتابخانه کامپایل‌شده در دایرکتوری نصب آن (حالت‌های گوناگون \fIinstall\fP را در ادامه ببینید)\&. .PP .SH "دستورات ICMBUILD (ICMBUILD COMMANDS)" .PP دستور \fIIcmbuild\fP دستورات زیر را می‌شناسد (گزینه‌های احتمالی درون کروشه نشان داده شده‌اند)\&. با دستورات \fIinstall\fP باید یک آرگومان \fIpath\fP مشخص شود که باید یک دایرکتوری موجود با قابلیت نوشتن برای کاربر باشد: .IP o \fIclean\fP .br پاکسازی بقایای عملیات‌های قبلی (دایرکتوری مشخص‌شده توسط تعریف \fITMP_DIR\fP در \fIicmconf\fP حذف می‌شود)\&. اگر هدرهای از پیش کامپایل‌شده ایجاد شده باشند (یعنی \fIPRECOMP\fP در \fIicmconf\fP مشخص شده باشد)، تمام فایل‌های دارای پسوند \fI\&.gch\fP در دایرکتوری اصلی و در دایرکتوری‌های فهرست‌شده در فایل \fICLASSES\fP نیز حذف می‌شوند\&. اگر \fIUSE_ALL\fP مشخص شده باشد، آن فایل‌ها نیز حذف می‌شوند؛ .IP .IP o \fIcleangch\fP .br تمام فایل‌های \fI\&.gch\fP که از پیش کامپایل شده بودند حذف می‌شوند (خواه در زیردایرکتوری \fIgch\fP از دایرکتوری \fITMP_DIR\fP (مشخص‌شده در \fIicmconf\fP) موجود باشند، خواه در دایرکتوری‌های مشخص‌شده در فایل \fICLASSES\fP، یا در دایرکتوری اصلی پروژه)\&. اگر در \fIicmconf\fP پارامتر \fIPRECOMP\fP مشخص نشده باشد، هیچ عملی انجام نمی‌شود؛ .IP .IP o \fIcleantmp\fP .br مشابه \fIicmbuild clean\fP، اما فایل‌های \fI\&.gch\fP و فایل‌های مشخص‌شده توسط تعریف \fIUSE_ALL\fP در \fIicmconf\fP حذف نمی‌شوند؛ .IP .IP o \fI[\-s] install program path\fP .br نصب برنامه ساخته‌شده در \fIpath\fP مشخص‌شده (برای استفاده پس از اجرای دستور \fIicmbuild\fP \fIprogram\fP، در ادامه را ببینید)\&. مسیر می‌تواند مطلق یا نسبی باشد و می‌تواند به‌طور اختیاری نام برنامه نصب‌شده را نیز تعیین کند\&. مثال: .nf icmbuild install program ~/bin/prog .fi این کار، برنامه باینری ساخته‌شده را در دایرکتوری \fIbin\fP کاربر و با نام \fIprog\fP نصب می‌کند؛ .IP .IP o \fI[\-s] install static path\fP .br نصب کتابخانه ایستای ساخته‌شده در مسیر مشخص‌شده (برای استفاده پس از اجرای \fIicmbuild\fP \fIlibrary\fP، در ادامه را ببینید)\&. مسیر می‌تواند مطلق یا نسبی باشد و به‌طور اختیاری نام کتابخانه نصب‌شده را مشخص کند\&. مثال: .nf icmbuild install static /usr/lib/ .fi این کار، کتابخانه ایستای ساخته‌شده را (با فرض اینکه نام آن \fIlibspecial\&.a\fP باشد) در \fI/usr/lib\fP به‌صورت \fI/usr/lib/libspecial\&.a\fP نصب می‌کند\&. .br .IP .IP o \fI[\-s] install shared path\fP هنگام استفاده از این دستور نصب، \fIicmconf\fP باید شامل \fI#define SHARED\fP باشد (ر\&.ک به \fBicmconf\fP(7))\&. این دستور کتابخانه اشتراکی ساخته‌شده را در مسیر مشخص‌شده نصب می‌کند (برای استفاده پس از اجرای \fIicmbuild\fP \fIlibrary\fP)\&. مسیر می‌تواند مطلق یا نسبی باشد و باید یک دایرکتوری موجود را مشخص کند\&. مثال: .nf icmbuild install shared /usr/lib/ .fi این کار، کتابخانه اشتراکی باینری ساخته‌شده (مانند \fIlibspecial\&.so\fP) را در \fI/usr/lib\fP به‌صورت \fI/usr/lib/libspecial\&.so\fP نصب می‌کند\&. علاوه بر این، پیوندهای نمادین (soft\-links) .nf libspecial\&.so \-> libspecial\&.so\&.X libspecial\&.so\&.X \-> libspecial\&.so\&.X\&.Y\&.Y\&.Z .fi در \fI/usr/lib\fP تعریف می‌شوند که در آن \fIX\&.Y\&.Z\fP نسخه‌های اصلی (major)، فرعی (minor) و زیرفرعی (subminor) تعریف‌شده در فایل \fIVERSION\fP هستند\&. .IP .IP o \fI[\-c] library\fP .br انجام نگهداری کتابخانه (یک کتابخانه ایستا و در صورت تمایل (اگر \fIicmconf\fP مقدار \fISHARED\fP را تعریف کرده باشد) یک کتابخانه اشتراکی (پویا) می‌سازد)؛ .IP .IP o \fI[\-c] program\fP .br انجام نگهداری برنامه (برنامه‌ای را از روی سورس‌های موجود در دایرکتوری کاری فعلی و سورس‌های موجود در دایرکتوری‌های مشخص‌شده در فایل \fICLASSES\fP می‌سازد)؛ .IP .IP o اگر هیچ دستوری مشخص نشده باشد (اما به صورت اختیاری تنها \fI\-c\fP مشخص شده باشد)، مشخصه \fIDEFCOM\fP در \fIicmconf\fP بررسی می‌شود\&. مشخصه‌های شناخته‌شده عبارتند از: .nf #define DEFCOM \(dq\&program\(dq\& .fi که معادل دستور \fIicmbuild\fP \fI[\-c] program\fP است؛ .br اگر \fIDEFCOM\fP به صورت زیر مشخص شده باشد: .nf #define DEFCOM \(dq\&library\(dq\& .fi در این صورت معادل دستور \fIicmbuild\fP \fI[\-c] library\fP خواهد بود\&. .br .IP اگر یک دستور صریح به \fIicmbuild\fP داده شود، مشخصات \fIDEFCOM\fP نادیده گرفته می‌شوند\&. .PP .SH "ICM\-DEP" .PP وابستگی‌های کلاس توسط برنامه پشتیبان \fIicmake\fP به نام \fIicm\-dep\fP مدیریت می‌شوند\&. هنگامی که گزینه \fI\-d\fP مشخص شده باشد، این برنامه می‌تواند از \fIicmake\fP فراخوانی شود\&. تمام گزینه‌ها و آرگومان‌های پس از \fI\-d\fP به \fIicm\-dep\fP فرستاده می‌شوند\&. .PP برنامه \fBicm\-dep\fP به‌طور خودکار توسط \fIicmbuild\fP برای مدیریت وابستگی‌های کلاس فراخوانی می‌شود\&. برای توضیحات مربوط به برنامه \fBicm\-dep\fP به صفحه راهنمای \fBicmake\fP(1)، بخش \fBICM\-DEP\fP مراجعه کنید\&. .PP به‌طور پیش‌فرض، \fIicmbuild\fP دستور \fIicmake \-d \-V go\fP را فراخوانی می‌کند: \fIicm_dep\fP برای انجام وظایف خود و نمایش اقداماتش در جریان خروجی استاندارد فراخوانی می‌شود\&. با تعیین پارامتر \fI#define ICM_DEP\fP در فایل \fIicmconf\fP، می‌توان این پیش‌فرض را لغو کرد (ر\&.ک به \fBicmconf\fP(7))\&. .PP .SH "فایل‌ها (FILES)" .PP مسیرهای ذکرشده صرفاً جنبه پیشنهادی دارند و ممکن است بسته به نحوه نصب متغیر باشند: .IP o \fB/usr/share/icmake/icmconf\fP نمونه کامل و مشروح از یک فایل پیکربندی \fIicmbuild\fP؛ .IP o \fB/usr/share/icmake/CLASSES\fP نمونه‌ای از یک فایل \fICLASSES\fP برای \fIicmbuild\fP\&. .PP .SH "مثال‌ها (EXAMPLES)" .PP در اینجا نمونه‌ای از فایل پیکربندی \fIicmconf\fP برای یک برنامه واقعی آورده شده است که از امکانات کتابخانه \fIbobcat\fP استفاده می‌کند: .nf #define CLS #define LIBRARY \(dq\&ofiles\(dq\& #define MAIN \(dq\&main\&.cc\(dq\& #define SOURCES \(dq\&*\&.cc\(dq\& #define OBJ_EXT \(dq\&\&.o\(dq\& #define SHAREDREQ \(dq\&\(dq\& #define TMP_DIR \(dq\&tmp\(dq\& #define USE_ALL \(dq\&a\(dq\& #define USE_ECHO ON #define CXX \(dq\&g++\(dq\& #define CXXFLAGS \(dq\&\-Wall \-Werror \-O2\(dq\& #define IH \(dq\&\&.ih\(dq\& #define MULTICOMP \(dq\&jobs \-q\(dq\& #define SPCH \(dq\&\(dq\& #define REFRESH #define LDFLAGS \(dq\&\(dq\& #define ADD_LIBRARIES \(dq\&bobcat\(dq\& #define ADD_LIBRARY_PATHS \(dq\&\(dq\& #define DEFCOM \(dq\&program\(dq\& .fi .PP .SH "همچنین ببینید (SEE ALSO)" \fBicmake\fP(1), \fBicmconf\fP(7), \fBicmstart\fP(1), \fBicmstart\&.rc\fP(7) .PP .SH "گزارش باگ‌ها (BUGS)" هیچ موردی گزارش نشده است\&. .PP .SH "کپی‌رایت و تکثیر (COPYRIGHT)" این یک نرم‌افزار آزاد است که تحت شرایط «مجوز عمومی همگانی گنو» (GPL) توزیع می‌شود\&. .PP .SH "نویسندگان (AUTHORS)" Frank B\&. Brokken (\fBf\&.b\&.brokken@rug\&.nl\fP)\&. .PP