.TH fpc.cfg 5 "22 february 2002" FPC "FPC configuration file" .SH "نام (NAME)" fpc.cfg \- فایل پیکربندی کامپایلر Free Pascal .SH "توضیحات (DESCRIPTION)" این فایل، فایل پیکربندی اصلی .I کامپایلر Free Pascal (FPC) است. .PP تمام گزینه‌های خط فرمان کامپایلر (توصیف‌شده در .BR fpc (1) ) را می‌توان در fpc.cfg مشخص کرد. .PP هنگامی که فایل پیکربندی یافت شود، خوانده می‌شود و با خطوط موجود در آن همانند گزینه‌هایی که در خط فرمان وارد کرده‌اید رفتار خواهد شد (به .BR fpc (1) مراجعه کنید)، همراه با برخی قابلیت‌های شرطی اضافی. .SH "سینتکس (SYNTAX)" می‌توانید با علامت # در فایل پیکربندی کامنت مشخص کنید. هر متنی از علامت # به بعد نادیده گرفته می‌شود، مگر اینکه یکی از کلیدواژه‌ها باشد (پایین را ببینید). .PP کامپایلر فایل fpc.cfg را در مکان‌های زیر جستجو می‌کند: .PP \ \fI\- در لینوکس و یونیکس:\fP .br \ \ \- دایرکتوری جاری. .br \ \ \- دایرکتوری خانگی (به دنبال .fpc.cfg می‌گردد). .br \ \ \- دایرکتوری مشخص‌شده در متغیر محیطی .br \ \ PPC\_CONFIG\_PATH، و اگر مقداردهی نشده باشد .br \ \ در compilerdir/../etc. .br \ \ \- اگر هنوز یافت نشده باشد: در /etc. .PP \ \fI\- در سایر سیستم‌عامل‌ها:\fP .br \ \ \- دایرکتوری جاری. .br \ \ \- دایرکتوری مشخص‌شده در متغیر محیطی .br \ \ PPC\_CONFIG\_PATH. .br \ \ \- دایرکتوری حاوی فایل باینری کامپایلر. .br .PP هنگامی که کامپایلر خواندن فایل پیکربندی را به پایان رساند، به پردازش گزینه‌های خط فرمان ادامه می‌دهد. .PP یکی از گزینه‌های خط فرمان به شما امکان می‌دهد یک فایل پیکربندی دوم را مشخص کنید: مشخص کردن .B \@foo در خط فرمان، به جای fpc.cfg از فایل foo استفاده کرده و گزینه‌های بعدی را از آنجا می‌خواند. پس از اینکه کامپایلر خواندن این فایل را تمام کرد، به پردازش خط فرمان ادامه می‌دهد. .PP فایل پیکربندی امکان نوعی پیش‌پردازش را فراهم می‌کند. این فایل دستورالعمل‌های زیر را می‌شناسد که باید آن‌ها را در ستون اول یک سطر قرار دهید: .PP \ #IFDEF .br \ #IFNDEF .br \ #ELSE .br \ #ENDIF .br \ #DEFINE .br \ #UNDEF .br \ #WRITE .br \ #INCLUDE .br \ #SECTION .br .PP این دستورالعمل‌ها به همان روش معادل‌های دستورالعملی $... خود در پاسکال کار می‌کنند: .IP \fI#IFDEF\fP .RS .IP "\fIساختار (Syntax)\fP" #IFDEF name .PP اگر کلیدواژه «name» که پس از آن می‌آید تعریف نشده باشد، خطوط پس از #IFDEF نادیده گرفته می‌شوند. .PP این خطوط تا رسیدن به کلیدواژه‌های #ELSE یا #ENDIF خوانده می‌شوند و پس از آن پردازش عادی از سر گرفته می‌شود. .IP "\fIمثال (Example)\fP" .nf #IFDEF VER0_99_12 \-Fu/usr/lib/fpc/0.99.12/rtl #ENDIF .fi .PP در مثال بالا، اگر با نسخه 0.99.12 کامپایلر اقدام به کامپایل کنید، مسیر .B /usr/lib/fpc/0.99.12/rtl به مسیر اضافه خواهد شد. .RE .IP \fI#IFNDEF\fP .RS .IP "\fIساختار (Syntax)\fP" #IFNDEF name .PP اگر کلیدواژه «name» که پس از آن می‌آید تعریف شده باشد، خطوط پس از #IFNDEF نادیده گرفته می‌شوند. .PP این خطوط تا رسیدن به کلیدواژه‌های #ELSE یا #ENDIF خوانده می‌شوند و پس از آن پردازش عادی از سر گرفته می‌شود. .IP "\fIمثال (Example)\fP" .nf #IFNDEF VER0_99_12 \-Fu/usr/lib/fpc/0.99.13/rtl #ENDIF .fi .PP در مثال بالا، اگر با نسخه 0.99.12 کامپایلر کامپایل \fBنکنید\fR، مسیر .B /usr/lib/fpc/0.99.13/rtl به مسیر اضافه خواهد شد. .RE .IP \fI#ELSE\fP .RS .IP "\fIساختار (Syntax)\fP" #ELSE .PP دستورالعمل #ELSE می‌تواند پس از یک دستورالعمل #IFDEF یا #IFNDEF به عنوان یک جایگزین مشخص شود. اگر دستورالعمل قبلی (#IFDEF یا #IFNDEF) پذیرفته شده باشد، خطوط پس از #ELSE نادیده گرفته می‌شوند. .PP این خطوط تا رسیدن به کلیدواژه #ENDIF نادیده گرفته می‌شوند و پس از آن پردازش عادی از سر گرفته می‌شود. .IP "\fIمثال (Example)\fP" .nf #IFDEF VER0_99_12 \-Fu/usr/lib/fpc/0.99.12/rtl #ELSE \-Fu/usr/lib/fpc/0.99.13/rtl #ENDIF .fi .PP در مثال بالا، اگر با نسخه 0.99.12 کامپایلر اقدام به کامپایل کنید، مسیر .B /usr/lib/fpc/0.99.12/rtl به مسیر اضافه خواهد شد؛ در غیر این صورت .B /usr/lib/fpc/0.99.13/rtl اضافه می‌شود. .RE .IP \fI#ENDIF\fP .RS .IP "\fIساختار (Syntax)\fP" #ENDIF .PP دستورالعمل #ENDIF پایان بلوکی را که با #IF(N)DEF شروع شده است (که احتمالاً یک #ELSE نیز در میان آن قرار دارد) مشخص می‌کند. .RE .IP \fI#DEFINE\fP .RS .IP "\fIساختار (Syntax)\fP" #DEFINE name .PP دستورالعمل #DEFINE یک کلیدواژه جدید تعریف می‌کند. این عمل همان تاثیر گزینه خط فرمان .B \-dname را دارد. .RE .IP \fI#UNDEF\fP .RS .IP "\fIساختار (Syntax)\fP" #UNDEF name .PP دستورالعمل #UNDEF تعریف یک کلیدواژه را در صورت وجود لغو می‌کند. این عمل همان تاثیر گزینه خط فرمان .B \-uname را دارد. .RE .IP \fI#WRITE\fP .RS .IP "\fIساختار (Syntax)\fP" #WRITE Message Text .PP دستورالعمل #WRITE عبارت «Message Text» را روی صفحه نمایش می‌دهد. این دستور می‌تواند برای نمایش هشدار در صورت تنظیم گزینه‌های خاص مفید باشد. .IP "\fIمثال (Example)\fP" .nf #IFDEF DEBUG #WRITE Setting debugging ON... \-g #ENDIF .fi .PP اگر DEBUG تعریف شده باشد، این دستور خط زیر را تولید خواهد کرد: .PP .nf Setting debugging ON... .fi .PP و سپس اطلاعات اشکال‌زدایی (debugging) را در کامپایلر فعال می‌کند. .RE .IP \fI#INCLUDE\fP .RS .IP "\fIساختار (Syntax)\fP" #INCLUDE filename .PP دستورالعمل #INCLUDE به کامپایلر فرمان می‌دهد که پیش از ادامه پردازش گزینه‌ها در فایل جاری، محتویات «filename» را بخواند. .PP این ویژگی زمانی می‌تواند مفید باشد که بخواهید یک فایل پیکربندی ویژه برای یک پروژه (یا در سیستم‌های شبه‌یونیکس مانند لینوکس، در دایرکتوری خانگی خود) داشته باشید، اما همچنان مایل باشید گزینه‌های سراسری تنظیم‌شده در یک فایل پیکربندی سراسری را نیز به همراه داشته باشید. .IP "\fIمثال (Example)\fP" .nf #IFDEF LINUX #INCLUDE /etc/fpc.cfg #ELSE #IFDEF GO32V2 #INCLUDE c:\(rspp\(rsbin\(rsfpc.cfg #ENDIF #ENDIF .fi .PP این دستور در صورتی که روی یک سیستم شبه‌یونیکس (مانند لینوکس) باشید، فایل .B /etc/fpc.cfg را شامل می‌شود، و روی یک سیستم DOS فایل .B c:\(rspp\(rsbin\(rsfpc.cfg را ضمیمه خواهد کرد. .RE .IP \fI#SECTION\fP .RS .IP "\fIساختار (Syntax)\fP" #SECTION name .PP دستورالعمل #SECTION مانند یک دستورالعمل #IFDEF عمل می‌کند، با این تفاوت که نیازی به دستورالعمل #ENDIF ندارد. نام ویژه .B COMMON همیشه وجود دارد؛ بدین معنا که خطوط پس از #SECTION COMMON همواره خوانده می‌شوند. .RE .SH "مثال‌ها (EXAMPLES)" یک بلوک استاندارد که اغلب در نسخه لینوکس fpc.cfg استفاده می‌شود عبارت است از: .PP .nf \-vwhin #IFDEF VER0_99_12 #IFDEF FPC_LINK_STATIC \-Fu/usr/lib/fpc/0.99.12/rtl/static \-Fu/usr/lib/fpc/0.99.12/units/static #ENDIF #IFDEF FPC_LINK_DYNAMIC \-Fu/usr/lib/fpc/0.99.12/rtl/shared \-Fu/usr/lib/fpc/0.99.12/units/shared #ENDIF \-Fu/usr/lib/fpc/0.99.12/rtl \-Fu/usr/lib/fpc/0.99.12/units #ENDIF .fi .PP این بلوک برای هر نسخه‌ای که استفاده می‌کنید (معمولاً آخرین نسخه رسمی و جدیدترین اسنپ‌شات توسعه‌دهندگان) در فایل fpc.cfg کپی می‌شود. .SH "همچنین ببینید (SEE ALSO)" .BR fpc (1)