WINEMAKER(1) Wine Developers Manual WINEMAKER(1)

winemaker - ایجاد زیرساخت ساخت برای کامپایل برنامه‌های ویندوز در یونیکس

winemaker [ --nobanner ] [ --backup | --nobackup ] [ --nosource-fix ]
[ --lower-none | --lower-all | --lower-uppercase ]
[ --lower-include | --nolower-include ] [ --mfc | --nomfc ]
[ --guiexe | --windows | --cuiexe | --console | --dll | --lib ]
[ -Dmacro[=defn] ] [ -Idir ] [ -Pdir ] [ -idll ] [ -Ldir ] [ -llibrary ]
[ --nodlls ] [ --nomsvcrt ] [ --interactive ] [ --single-target name ]
[ --generated-files ] [ --nogenerated-files ]
[ --wine32 ]
work_directory | project_file | workspace_file

winemaker یک اسکریپت پرل (perl) است که برای کمک به راه‌اندازی اولیه فرآیند تبدیل کدهای منبع ویندوز به برنامه‌های Winelib طراحی شده است.

برای انجام این کار، winemaker می‌تواند عملیات زیر را انجام دهد:

- تغییر نام فایل‌ها و دایرکتوری‌های منبع به حروف کوچک در صورتی که در طول انتقال، همگی به حروف بزرگ تبدیل شده باشند.

- انجام تبدیل قالب DOS به یونیکس (CRLF به LF).

- بررسی دستورات include و ارجاعات فایل‌های منبع (resource) برای جایگزینی بک‌اسلش‌ها با اسلش.

- در طول مرحله بالا، winemaker همچنین یک جستجوی غیرحساس به حروف کوچک و بزرگ برای فایل ارجاع‌شده در مسیر include انجام می‌دهد و در صورت نیاز، دستور include را با حروف بزرگ و کوچک صحیح بازنویسی می‌کند.

- برنامه winemaker همچنین موارد خاص‌تر دیگر مانند استفاده از #pragma pack، استفاده از afxres.h در پروژه‌های غیر MFC و موارد دیگر را بررسی می‌کند. هرگاه با مورد غیرمعمولی روبرو شود، در مورد آن هشدار می‌دهد.

- برنامه winemaker می‌تواند یک درخت دایرکتوری کامل را یک‌باره پیمایش کند، فایل‌های اجرایی و کتابخانه‌هایی را که برای ساخت آن‌ها تلاش می‌کنید حدس بزند، آن‌ها را با فایل‌های منبع تطبیق دهد و Makefile متناظر را تولید کند.

- در نهایت winemaker یک Makefile سراسری برای استفاده معمول تولید می‌کند.

- برنامه winemaker پروژه‌های مبتنی بر MFC را می‌شناسد و فایل‌های سفارشی‌شده برای آن‌ها ایجاد می‌کند.

- برنامه winemaker می‌تواند فایل‌های پروژه موجود را بخواند. این برنامه از فایل‌های dsp، dsw، vcproj و sln پشتیبانی می‌کند.

غیرفعال کردن چاپ بنر آغازین.
تهیه نسخه پشتیبان از تمام فایل‌های منبع تغییریافته. این حالت پیش‌فرض است.
عدم تهیه نسخه پشتیبان از فایل‌های منبع تغییریافته.
عدم تلاش برای اصلاح فایل‌های منبع (مانند تبدیل DOS به یونیکس). این گزینه در صورتی که فایل‌ها فقط‌خواندنی باشند، از بروز خطا جلوگیری می‌کند.
تغییر نام تمام فایل‌ها و دایرکتوری‌ها به حروف کوچک.
فقط تغییر نام فایل‌ها و دایرکتوری‌هایی که نام آن‌ها کاملاً با حروف بزرگ است. به عنوان مثال، HELLO.C تغییر نام می‌یابد اما World.c تغییر نمی‌کند.
عدم تغییر نام فایل‌ها و دایرکتوری‌ها به حروف کوچک. توجه داشته باشید که این گزینه مانع از تغییر نام فایل در صورتی که پسوند آن بدون تغییر قابل پردازش نباشد (مانند ‎".Cxx"‎) نمی‌شود. این حالت پیش‌فرض است.
هنگامی که فایل متناظر با یک دستور include (یا سایر انواع ارجاع به فایل برای فایل‌های منبع) یافت نشود، نام آن فایل را به حروف کوچک تبدیل می‌کند. این حالت پیش‌فرض است.
عدم تغییر دستور include در صورتی که فایل ارجاع‌شده یافت نشود.
هنگامی که یک هدف اجرایی یا هدفی با نوع ناشناخته یافت شود، آن را یک برنامه گرافیکی (GUI) در نظر می‌گیرد. این حالت پیش‌فرض است.
هنگامی که یک هدف اجرایی یا هدفی با نوع ناشناخته یافت شود، آن را یک برنامه کنسولی (CUI) در نظر می‌گیرد.
هنگامی که هدفی با نوع ناشناخته یافت شود (یعنی زمانی که winemaker نتواند تشخیص دهد که هدف یک فایل اجرایی، dll یا کتابخانه ایستا است)، آن را یک dll در نظر می‌گیرد.
هنگامی که هدفی با نوع ناشناخته یافت شود (یعنی زمانی که winemaker نتواند تشخیص دهد که هدف یک فایل اجرایی، dll یا کتابخانه ایستا است)، آن را یک کتابخانه ایستا در نظر می‌گیرد.
مشخص می‌کند که اهداف مبتنی بر MFC هستند. در این حالت، winemaker مسیرهای include و کتابخانه‌ها را متناسب با آن تنظیم کرده و هدف را با کتابخانه MFC پیوند (link) می‌دهد.
مشخص می‌کند که اهداف مبتنی بر MFC نیستند. این گزینه استفاده از کتابخانه‌های MFC را غیرفعال می‌کند، حتی اگر winemaker با فایل‌های stdafx.cpp یا stdafx.h روبرو شود که در صورت عدم تعیین --nomfc یا --mfc باعث فعال‌سازی خودکار MFC می‌شدند.
تعریف ماکروی مشخص‌شده را به فهرست سراسری تعاریف ماکرو اضافه می‌کند.
دایرکتوری مشخص‌شده را به مسیر سراسری include اضافه می‌کند.
دایرکتوری مشخص‌شده را به مسیر سراسری dll اضافه می‌کند.
کتابخانه Winelib مشخص‌شده را به فهرست سراسری کتابخانه‌های Winelib جهت وارد کردن (import) اضافه می‌کند.
دایرکتوری مشخص‌شده را به مسیر سراسری کتابخانه‌ها اضافه می‌کند.
کتابخانه مشخص‌شده را به فهرست سراسری کتابخانه‌ها جهت پیوند دادن (link) اضافه می‌کند.
عدم استفاده از مجموعه استاندارد کتابخانه‌های Winelib برای وارد کردن. به این معنی که هر DLL مورد استفاده در کد شما باید به صراحت با گزینه -i مشخص شود. مجموعه استاندارد کتابخانه‌ها عبارتند از: odbc32.dll، odbccp32.dll، ole32.dll، oleaut32.dll و winspool.drv.
تنظیم گزینه‌هایی برای اعلام به winegcc جهت عدم کامپایل در برابر msvcrt. در صورتی که فایل‌های cpp شما شامل <string> هستند از این گزینه استفاده کنید.
استفاده از حالت تعاملی. در این حالت winemaker از شما می‌خواهد تا فهرست اهداف هر دایرکتوری را تایید کرده و سپس گزینه‌های خاص مربوط به دایرکتوری و اهداف را مشخص کنید.
مشخص می‌کند که تنها یک هدف به نام name وجود دارد.
تولید فایل Makefile. این حالت پیش‌فرض است.
فایل Makefile را تولید نمی‌کند.
تولید یک هدف ۳۲ بیتی. این گزینه در سیستم‌های wow64 کاربرد دارد. بدون این گزینه، از معماری پیش‌فرض استفاده می‌شود.

یک نمونه استفاده معمول از winemaker:

$ winemaker --lower-uppercase -DSTRICT .

دستور فوق به winemaker اعلام می‌کند که دایرکتوری جاری و زیردایرکتوری‌های آن را برای یافتن فایل‌های منبع پیمایش کند. هرگاه فایل یا دایرکتوری پیدا کند که نام آن تماماً با حروف بزرگ است، آن را به حروف کوچک تغییر نام دهد. سپس باید تمام این فایل‌های منبع را جهت کامپایل با Winelib اصلاح کرده و Makefileها را تولید کند. گزینه -DSTRICT مشخص می‌کند که ماکروی STRICT باید هنگام کامپایل این منابع تنظیم شود. در نهایت یک Makefile ایجاد خواهد شد.

گام بعدی اجرای دستور زیر خواهد بود:

$ make

اگر در این مرحله با خطاهای کامپایل مواجه شدید (که برای پروژه‌های با اندازه مناسب کاملاً محتمل است)، باید راهنمای کاربری Winelib را بررسی کنید تا نکاتی برای رفع آن‌ها بیابید.

برای یک پروژه مبتنی بر MFC باید در عوض دستورات زیر را اجرا کنید:

$ winemaker --lower-uppercase --mfc .
$ make

برای یک فایل پروژه موجود باید دستورات زیر را اجرا کنید:

$ winemaker myproject.dsp
$ make

در برخی موارد لازم است Makefile یا فایل‌های منبع را به صورت دستی ویرایش کنید.

با فرض اینکه فایل اجرایی یا کتابخانه ویندوز در دسترس باشد، می‌توانیم از winedump برای تعیین نوع فایل اجرایی (گرافیکی یا کنسولی)، کتابخانه‌هایی که با آن‌ها پیوند داده شده و توابعی که صادر (export) می‌کند (برای کتابخانه‌ها) استفاده کنیم. سپس می‌توانیم تمام این تنظیمات را برای هدف متناظر در Winelib بازیابی کنیم.

علاوه بر این، winemaker در یافتن کتابخانه حاوی فایل اجرایی چندان خوب عمل نمی‌کند: این کتابخانه یا باید در دایرکتوری جاری باشد یا در LD_LIBRARY_PATH.

برنامه winemaker هنوز از فایل‌های پیام و کامپایلر پیام پشتیبانی نمی‌کند.

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

François Gouget برای CodeWeavers
Dimitrie O. Paun
André Hentschel

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

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

Jan 2012 Wine 11.17