WRC(1) Wine Developers Manual WRC(1)

wrc - کامپایلر منابع Wine

wrc [options] [inputfile...]

دستور wrc منابع را از inputfile به قالب باینری سازگار با win16 و win32 کامپایل می‌کند.

فایل منبع پیش از کامپایل شدن منابع، توسط یک پیش‌پردازنده داخلی سازگار با ANSI-C پیش‌پردازش می‌شود. بخش پیش‌پردازنده (PREPROCESSOR) را در زیر ببینید.

دستور wrc مجموعه‌ای از inputfile را به‌عنوان آرگومان دریافت می‌کند. اگر هیچ فایل ورودی‌ای مشخص نشود، منابع از ورودی استاندارد خوانده می‌شوند. اگر فایل خروجی با -o مشخص نشده باشد، آن‌گاه wrc خروجی را در inputfile.res با حذف پسوند .rc می‌نویسد، یا در صورتی که فایل ورودی داده نشده باشد در wrc.tab.res ذخیره می‌کند.

شناسه پیش‌پردازنده id را (به‌صورت اختیاری) با مقدار val تعریف می‌کند. همچنین بخش پیش‌پردازنده (PREPROCESSOR) را در زیر ببینید.
سطح اشکال‌زدایی را روی nn تنظیم می‌کند. این مقدار یک ماسک بیتی متشکل از این موارد است: 1=پرگو، 2=تخلیه اطلاعات داخلی، 4=ردیابی تجزیه‌کننده منابع، 8=پیام‌های پیش‌پردازنده، 16=پویشگر پیش‌پردازنده و 32=ردیابی تجزیه‌کننده پیش‌پردازنده.
فقط پیش‌پردازش را انجام می‌دهد. اگر فایل خروجی انتخاب نشده باشد، خروجی در خروجی استاندارد نوشته می‌شود. خروجی با آنچه gcc تولید می‌کند سازگار است.
پیام خلاصه‌ای از راهنما را نمایش داده و خارج می‌شود.
نام فایل ورودی. اگر این گزینه استفاده نشود، wrc از نخستین آرگومان غیرگزینه‌ای به‌عنوان نام فایل ورودی استفاده خواهد کرد. در صورت نبود آرگومان‌های غیرگزینه‌ای، wrc از ورودی استاندارد می‌خواند.
مسیر path را به فهرست دایرکتوری‌های جستجوی فایل‌های include می‌افزاید. مشخص کردن چندین‌باره -I مجاز است. فایل‌های include به ترتیبی که گزینه‌های -I مشخص شده‌اند جستجو می‌شوند.
جستجو با gcc سازگار است؛ به این صورت که نام فایل‌های داخل '<>' منحصراً از طریق مسیرهای تعیین‌شده با -I جستجو می‌شوند، در حالی که برای نام فایل‌های داخل '""' ابتدا تلاش می‌شود تا در دایرکتوری جاری باز شوند. دستورهای منابع دارای ارجاع به فایل نیز به همین شیوه مکان‌یابی می‌شوند.
قالب ورودی را تعیین می‌کند. گزینه‌های معتبر 'rc' یا 'rc16' هستند. تنظیم ورودی روی 'rc16' شناسایی کلمات کلیدی win32 را غیرفعال می‌کند.
زبان پیش‌فرض را روی lang تنظیم می‌کند. مقدار پیش‌فرض، زبان خنثی 0 است (یعنی "LANGUAGE 0, 0").
منابع را به ترتیب برای بسترهای ۱۶ بیتی، ۳۲ بیتی یا ۶۴ بیتی تولید می‌کند. تنها تفاوت میان ۳۲ بیتی و ۶۴ بیتی در این است که آیا نماد پیش‌پردازنده _WIN64 تعریف شده است یا خیر.
دایرکتوری جستجو برای فایل‌های NLS شامل جدول‌های نگاشت صفحه کد (codepage) را مشخص می‌کند.
مسیر پیش‌فرض include را جستجو نمی‌کند؛ فایل‌های include را تنها در دایرکتوری‌هایی جستجو می‌کند که صراحتاً با گزینه -I مشخص شده‌اند.
برای سازگاری با windres نادیده گرفته می‌شود.
خروجی را در file می‌نویسد. مقدار پیش‌فرض inputfile.res با حذف پسوند .rc است، یا در صورتی که ورودی از ورودی استاندارد خوانده شود wrc.tab.res خواهد بود.
قالب خروجی را مشخص می‌کند. قالب‌های پشتیبانی‌شده عبارتند از po، pot، res و res16. اگر این گزینه مشخص نشود، قالب پیش‌فرض res خواهد بود.
در حالت po، اگر نام فایل خروجی مشخص شده باشد باید با نام یک زبان شناخته‌شده مانند en_US.po مطابقت داشته باشد؛ تنها منابع مربوط به زبان مشخص‌شده در خروجی قرار می‌گیرند. اگر نام فایل خروجی مشخص نشود، برای هر زبانی که در ورودی یافت شود یک فایل .po جداگانه ایجاد می‌شود.
هشدارهای وسواس‌گونه (pedantic) را فعال می‌کند. به‌ویژه تعریف دوباره عبارت‌های #define را می‌توان با این گزینه کشف کرد.
تولید ترجمه‌های منابع را بر اساس فایل‌های mo بارگیری‌شده از دایرکتوری مشخص‌شده فعال می‌کند. آن دایرکتوری باید از قرارداد gettext پیروی کند؛ به‌ویژه باید حاوی یک فایل .mo برای هر زبان و یک فایل LINGUAS شامل فهرست زبان‌های موجود باشد.
برای سازگاری با rc نادیده گرفته می‌شود.
این گزینه می‌تواند برای تعیین پیش‌پردازنده مورد استفاده، شامل هرگونه آرگومان اولیه، به کار رود. در صورت عدم تعیین، wrc از پیش‌پردازنده داخلی خود استفاده می‌کند. برای غیرفعال کردن پیش‌پردازش، از --preprocessor=cat استفاده کنید.
پیشوند مسیرهای استاندارد include را با dir تنظیم می‌کند.
صفحه کد پیش‌فرض فایل ورودی را روی UTF-8 تنظیم می‌کند.
تعریف شناسه پیش‌پردازنده id را لغو می‌کند. لطفاً توجه داشته باشید که تنها ماکروهایی که تا این لحظه تعریف شده‌اند توسط این دستور لغو می‌شوند. با این حال، این موارد شامل ماکروهای ویژه‌ای که به‌طور خودکار توسط wrc تعریف شده‌اند نیز می‌شود. همچنین بخش پیش‌پردازنده (PREPROCESSOR) را در زیر ببینید.
برای سازگاری با windres نادیده گرفته می‌شود.
حالت پرگو را فعال می‌کند (معادل -d 1).
نسخه برنامه را نمایش داده و خارج می‌شود.

پیش‌پردازنده با استاندارد ANSI-C سازگار بوده و شامل برخی از افزونه‌های پیش‌پردازنده gcc است.

پیش‌پردازنده این دستورها را شناسایی می‌کند: #include،‏ #define (هم ساده و هم ماکرو)،‏ #undef،‏ #if،‏ #ifdef،‏ #ifndef،‏ #elif،‏ #else،‏ #endif،‏ #error،‏ #warning،‏ #line،‏ # (هر دو دستور تهی و خط)،‏ #pragma (نادیده گرفته می‌شود)،‏ #ident (نادیده گرفته می‌شود).

پیش‌پردازنده به‌طور پیش‌فرض چند تعریف را مقداردهی می‌کند:
- RC_INVOKED روی 1 تنظیم می‌شود
- __WRC__ نسخه اصلی wrc
- __WRC_MINOR__ نسخه فرعی wrc
- __WRC_PATCHLEVEL__ سطح وصله

حالت کامپایل Win32 همچنین _WIN32 را روی 1 تنظیم می‌کند.

ماکروهای ویژه __FILE__،‏ __LINE__،‏ __TIME__ و __DATE__ نیز شناسایی می‌شوند و به معادل‌های مربوط به خود بسط می‌یابند.

زبان، نسخه و مشخصات را می‌توان به تمام انواع منابعی که داده‌های درون‌خطی دارند، مانند RCDATA، نسبت داد. این قابلیت یک افزونه نسبت به کامپایلر منابع مایکروسافت است که این پشتیبانی را کلاً ندارد. تنها VERSIONINFO نمی‌تواند نسخه و مشخصات پیوست‌شده داشته باشد، اما در صورتی که آن را پیش از شروع منبع VERSIONINFO به‌درستی اعلان کنید، زبان‌ها به‌خوبی منتشر می‌شوند.

مثال:

1 RCDATA DISCARDABLE
LANGUAGE 1, 0
VERSION 312
CHARACTERISTICS 876
{
	1, 2, 3, 4, 5, "and whatever more data you want"
	'00 01 02 03 04 05 06 07 08'
}

دستور wrc توسط Bertho A. Stultiens نوشته شده است و بازنویسی تقریباً کاملی از نخستین کامپایلر منابع Wine (سال ۱۹۹۴) اثر Martin von Loewis است. انواع منابع اضافی توسط Ulrich Czekalla و Albert den Haan اضافه شدند. پاک‌سازی‌های متعددی در سال‌های ۲۰۰۲–۲۰۰۳ توسط Dimitrie O. Paun انجام شد. رفع باگ‌های بسیاری نیز توسط توسعه‌دهندگان متعدد Wine انجام گرفته است.

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

هیچ پشتیبانی‌ای برای موارد زیر وجود ندارد:
- RT_DLGINCLUDE،‏ RT_VXD،‏ RT_PLUGPLAY و RT_HTML (قالب نامشخص)
- کنترل PUSHBOX به دلیل نبود قابلیت‌های اصلی پشتیبانی نمی‌شود.

قلم‌ها تجزیه و تولید می‌شوند، اما هنوز هیچ پشتیبانی‌ای برای تولید FONTDIR وجود ندارد. کاربر باید منبع FONTDIR را در فایل منبع قرار دهد تا با منابع FONT مطابقت داشته باشد.

باگ‌ها را می‌توان در سامانه ردیابی باگ Wine گزارش کرد.

دستور wrc بخشی از توزیع Wine است که از طریق WineHQ، یعنی پایگاه توسعه Wine در دسترس است.

wine(1),
مستندات و پشتیبانی Wine.

October 2005 Wine 11.17