fpc.cfg(5) FPC configuration file fpc.cfg(5)

fpc.cfg - فایل پیکربندی کامپایلر Free Pascal

این فایل، فایل پیکربندی اصلی کامپایلر Free Pascal (FPC) است.

تمام گزینه‌های خط فرمان کامپایلر (توصیف‌شده در fpc(1) ) را می‌توان در fpc.cfg مشخص کرد.

هنگامی که فایل پیکربندی یافت شود، خوانده می‌شود و با خطوط موجود در آن همانند گزینه‌هایی که در خط فرمان وارد کرده‌اید رفتار خواهد شد (به fpc(1) مراجعه کنید)، همراه با برخی قابلیت‌های شرطی اضافی.

می‌توانید با علامت # در فایل پیکربندی کامنت مشخص کنید. هر متنی از علامت # به بعد نادیده گرفته می‌شود، مگر اینکه یکی از کلیدواژه‌ها باشد (پایین را ببینید).

کامپایلر فایل fpc.cfg را در مکان‌های زیر جستجو می‌کند:

- در لینوکس و یونیکس:
- دایرکتوری جاری.
- دایرکتوری خانگی (به دنبال .fpc.cfg می‌گردد).
- دایرکتوری مشخص‌شده در متغیر محیطی
PPC_CONFIG_PATH، و اگر مقداردهی نشده باشد
در compilerdir/../etc.
- اگر هنوز یافت نشده باشد: در /etc.

- در سایر سیستم‌عامل‌ها:
- دایرکتوری جاری.
- دایرکتوری مشخص‌شده در متغیر محیطی
PPC_CONFIG_PATH.
- دایرکتوری حاوی فایل باینری کامپایلر.

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

یکی از گزینه‌های خط فرمان به شما امکان می‌دهد یک فایل پیکربندی دوم را مشخص کنید: مشخص کردن @foo در خط فرمان، به جای fpc.cfg از فایل foo استفاده کرده و گزینه‌های بعدی را از آنجا می‌خواند. پس از اینکه کامپایلر خواندن این فایل را تمام کرد، به پردازش خط فرمان ادامه می‌دهد.

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

#IFDEF
#IFNDEF
#ELSE
#ENDIF
#DEFINE
#UNDEF
#WRITE
#INCLUDE
#SECTION

این دستورالعمل‌ها به همان روش معادل‌های دستورالعملی $... خود در پاسکال کار می‌کنند:

#IFDEF
ساختار (Syntax)
#IFDEF name

اگر کلیدواژه «name» که پس از آن می‌آید تعریف نشده باشد، خطوط پس از #IFDEF نادیده گرفته می‌شوند.

این خطوط تا رسیدن به کلیدواژه‌های #ELSE یا #ENDIF خوانده می‌شوند و پس از آن پردازش عادی از سر گرفته می‌شود.

مثال (Example)
#IFDEF VER0_99_12
-Fu/usr/lib/fpc/0.99.12/rtl
#ENDIF

در مثال بالا، اگر با نسخه 0.99.12 کامپایلر اقدام به کامپایل کنید، مسیر /usr/lib/fpc/0.99.12/rtl به مسیر اضافه خواهد شد.

#IFNDEF
ساختار (Syntax)
#IFNDEF name

اگر کلیدواژه «name» که پس از آن می‌آید تعریف شده باشد، خطوط پس از #IFNDEF نادیده گرفته می‌شوند.

این خطوط تا رسیدن به کلیدواژه‌های #ELSE یا #ENDIF خوانده می‌شوند و پس از آن پردازش عادی از سر گرفته می‌شود.

مثال (Example)
#IFNDEF VER0_99_12
-Fu/usr/lib/fpc/0.99.13/rtl
#ENDIF

در مثال بالا، اگر با نسخه 0.99.12 کامپایلر کامپایل نکنید، مسیر /usr/lib/fpc/0.99.13/rtl به مسیر اضافه خواهد شد.

#ELSE
ساختار (Syntax)
#ELSE

دستورالعمل #ELSE می‌تواند پس از یک دستورالعمل #IFDEF یا #IFNDEF به عنوان یک جایگزین مشخص شود. اگر دستورالعمل قبلی (#IFDEF یا #IFNDEF) پذیرفته شده باشد، خطوط پس از #ELSE نادیده گرفته می‌شوند.

این خطوط تا رسیدن به کلیدواژه #ENDIF نادیده گرفته می‌شوند و پس از آن پردازش عادی از سر گرفته می‌شود.

مثال (Example)
#IFDEF VER0_99_12
-Fu/usr/lib/fpc/0.99.12/rtl
#ELSE
-Fu/usr/lib/fpc/0.99.13/rtl
#ENDIF

در مثال بالا، اگر با نسخه 0.99.12 کامپایلر اقدام به کامپایل کنید، مسیر /usr/lib/fpc/0.99.12/rtl به مسیر اضافه خواهد شد؛ در غیر این صورت /usr/lib/fpc/0.99.13/rtl اضافه می‌شود.

#ENDIF
ساختار (Syntax)
#ENDIF

دستورالعمل #ENDIF پایان بلوکی را که با #IF(N)DEF شروع شده است (که احتمالاً یک #ELSE نیز در میان آن قرار دارد) مشخص می‌کند.

#DEFINE
ساختار (Syntax)
#DEFINE name

دستورالعمل #DEFINE یک کلیدواژه جدید تعریف می‌کند. این عمل همان تاثیر گزینه خط فرمان -dname را دارد.

#UNDEF
ساختار (Syntax)
#UNDEF name

دستورالعمل #UNDEF تعریف یک کلیدواژه را در صورت وجود لغو می‌کند. این عمل همان تاثیر گزینه خط فرمان -uname را دارد.

#WRITE
ساختار (Syntax)
#WRITE Message Text

دستورالعمل #WRITE عبارت «Message Text» را روی صفحه نمایش می‌دهد. این دستور می‌تواند برای نمایش هشدار در صورت تنظیم گزینه‌های خاص مفید باشد.

مثال (Example)
#IFDEF DEBUG
#WRITE Setting debugging ON...
-g
#ENDIF

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

Setting debugging ON...

و سپس اطلاعات اشکال‌زدایی (debugging) را در کامپایلر فعال می‌کند.

#INCLUDE
ساختار (Syntax)
#INCLUDE filename

دستورالعمل #INCLUDE به کامپایلر فرمان می‌دهد که پیش از ادامه پردازش گزینه‌ها در فایل جاری، محتویات «filename» را بخواند.

این ویژگی زمانی می‌تواند مفید باشد که بخواهید یک فایل پیکربندی ویژه برای یک پروژه (یا در سیستم‌های شبه‌یونیکس مانند لینوکس، در دایرکتوری خانگی خود) داشته باشید، اما همچنان مایل باشید گزینه‌های سراسری تنظیم‌شده در یک فایل پیکربندی سراسری را نیز به همراه داشته باشید.

مثال (Example)
#IFDEF LINUX
  #INCLUDE /etc/fpc.cfg
#ELSE
  #IFDEF GO32V2
    #INCLUDE c:\pp\bin\fpc.cfg
  #ENDIF
#ENDIF

این دستور در صورتی که روی یک سیستم شبه‌یونیکس (مانند لینوکس) باشید، فایل /etc/fpc.cfg را شامل می‌شود، و روی یک سیستم DOS فایل c:\pp\bin\fpc.cfg را ضمیمه خواهد کرد.

#SECTION
ساختار (Syntax)
#SECTION name

دستورالعمل #SECTION مانند یک دستورالعمل #IFDEF عمل می‌کند، با این تفاوت که نیازی به دستورالعمل #ENDIF ندارد. نام ویژه COMMON همیشه وجود دارد؛ بدین معنا که خطوط پس از #SECTION COMMON همواره خوانده می‌شوند.

یک بلوک استاندارد که اغلب در نسخه لینوکس fpc.cfg استفاده می‌شود عبارت است از:

-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

این بلوک برای هر نسخه‌ای که استفاده می‌کنید (معمولاً آخرین نسخه رسمی و جدیدترین اسنپ‌شات توسعه‌دهندگان) در فایل fpc.cfg کپی می‌شود.

fpc(1)

22 february 2002 FPC