-
فرشید پوشنده
1405/05/22
-
22 مرداد 1405
بازگشت به: آموزش برنامه نویسی c++ سی پلاس پلاس
۰.۹ — پیکربندی کامپایلر: پیکربندیهای ساخت (Build Configurations)
پیکربندی ساخت (Build Configuration) که به آن هدف ساخت (Build Target) نیز گفته میشود، مجموعهای از تنظیمات پروژه است که تعیین میکند IDE شما چگونه پروژه شما را بسازد. پیکربندی ساخت معمولاً شامل مواردی مانند نام فایل اجرایی، پوشههایی که IDE برای جستجوی کدهای دیگر و فایلهای کتابخانه در آنها جستجو میکند، اینکه آیا اطلاعات اشکالزدایی نگهداری شوند یا حذف شوند، میزان بهینهسازی برنامه توسط کامپایلر و غیره است. به طور کلی، بهتر است این تنظیمات را در مقادیر پیشفرض خود باقی بگذارید، مگر اینکه دلیل خاصی برای تغییر چیزی داشته باشید.
وقتی یک پروژه جدید در IDE خود ایجاد میکنید، بیشتر IDEها دو پیکربندی ساخت مختلف برای شما تنظیم میکنند: یک پیکربندی انتشار (Release Configuration) و یک پیکربندی اشکالزدایی (Debug Configuration).
پیکربندی اشکالزدایی (Debug Configuration)
پیکربندی اشکالزدایی برای کمک به شما در اشکالزدایی برنامه طراحی شده است و به طور کلی همان پیکربندی است که هنگام نوشتن برنامههای خود از آن استفاده خواهید کرد. این پیکربندی تمام بهینهسازیها را غیرفعال میکند و شامل اطلاعات اشکالزدایی است که برنامههای شما را بزرگتر و کندتر میکند، اما اشکالزدایی را بسیار آسانتر میسازد. پیکربندی اشکالزدایی معمولاً بهطور پیشفرض به عنوان پیکربندی فعال انتخاب میشود. در درسهای بعدی بیشتر در مورد تکنیکهای اشکالزدایی صحبت خواهیم کرد.
پیکربندی انتشار (Release Configuration)
پیکربندی انتشار برای زمانی طراحی شده است که برنامه خود را به عموم منتشر میکنید. این نسخه معمولاً برای اندازه و عملکرد بهینهسازی میشود و اطلاعات اشکالزدایی اضافی را شامل نمیشود. از آنجایی که پیکربندی انتشار شامل تمام بهینهسازیها است، این حالت برای آزمایش عملکرد کد شما نیز مفید است (که بعداً در این مجموعه آموزشی نحوه انجام آن را نشان خواهیم داد).
مقایسه اندازه فایلهای اجرایی
وقتی برنامه Hello World (از درس ۰.۷ — کامپایل کردن اولین برنامه شما) با استفاده از Visual Studio ساخته شد، فایل اجرایی تولیدشده در پیکربندی اشکالزدایی ۶۵ کیلوبایت بود، در حالی که فایل اجرایی ساختهشده در نسخه انتشار ۱۲ کیلوبایت بود. این تفاوت تا حد زیادی به دلیل اطلاعات اشکالزدایی اضافی است که در ساخت اشکالزدایی نگهداری میشود.
پیکربندیهای سفارشی
اگرچه میتوانید پیکربندیهای ساخت سفارشی خود را ایجاد کنید، اما به ندرت دلیلی برای این کار خواهید داشت، مگر اینکه بخواهید دو ساخت ساختهشده با تنظیمات کامپایلر مختلف را مقایسه کنید.
بهترین روش
هنگام توسعه برنامههای خود از پیکربندی ساخت اشکالزدایی (Debug) استفاده کنید. وقتی آمادهاید که فایل اجرایی خود را به دیگران منتشر کنید، یا میخواهید عملکرد را آزمایش کنید، از پیکربندی ساخت انتشار (Release) استفاده کنید.
برخی از IDEها (مانند Visual Studio) همچنین پیکربندیهای ساخت جداگانهای برای پلتفرمهای مختلف ایجاد میکنند. برای مثال، Visual Studio پیکربندیهای ساخت را برای هر دو پلتفرم x86 (۳۲ بیتی) و x64 (۶۴ بیتی) ایجاد میکند.
تغییر بین پیکربندیهای ساخت
برای کاربران Visual Studio
روشهای متعددی برای تغییر بین Debug و Release در Visual Studio وجود دارد. سادهترین راه این است که انتخاب خود را مستقیماً از کادر کشویی Solution Configurations در نوار ابزار استاندارد تنظیم کنید:
فعلاً آن را روی Debug تنظیم کنید.
همچنین میتوانید با انتخاب منوی Build > Configuration Manager، به کادر محاورهای مدیریت پیکربندی (Configuration Manager) دسترسی پیدا کنید و پیکربندی فعال راهحل را تغییر دهید.
در سمت راست کادر کشویی Solution Configurations، Visual Studio همچنین یک کادر کشویی Solution Platforms دارد که به شما امکان میدهد بین پلتفرمهای x86 (۳۲ بیتی) و x64 (۶۴ بیتی) جابهجا شوید.
برای کاربران Code::Blocks
در Code::Blocks، باید آیتمی به نام Build Target (هدف ساخت) در نوار ابزار کامپایلر (Compiler toolbar) مشاهده کنید:
فعلاً آن را روی Debug تنظیم کنید.
برای کاربران gcc و Clang
برای ساختهای اشکالزدایی (Debug)، گزینهٔ -ggdb را به خط فرمان اضافه کنید و برای ساختهای انتشار (Release)، از گزینههای -O2 -DNDEBUG استفاده کنید. در حال حاضر از گزینههای ساخت اشکالزدایی استفاده کنید.
برای GCC و Clang، از گزینهٔ -O# برای کنترل تنظیمات بهینهسازی استفاده میشود. رایجترین گزینهها به شرح زیر هستند:
-O0سطح بهینهسازی توصیهشده برای ساختهای اشکالزدایی است، زیرا بهینهسازی را غیرفعال میکند. این تنظیم پیشفرض است.-O2سطح بهینهسازی توصیهشده برای ساختهای انتشار است، زیرا بهینهسازیهایی را اعمال میکند که باید برای همه برنامهها مفید باشند.-O3بهینهسازیهای بیشتری را اضافه میکند که ممکن است بسته به برنامهٔ خاص، عملکرد بهتری نسبت به-O2داشته باشند یا نداشته باشند. پس از نوشتن برنامه، میتوانید سعی کنید ساخت انتشار خود را با-O3به جای-O2کامپایل کنید و اندازهگیری کنید تا ببینید کدام سریعتر است.
برای اطلاعات بیشتر دربارهٔ گزینههای بهینهسازی، به آدرس زیر مراجعه کنید:
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
برای کاربران VS Code
وقتی برای اولین بار برنامه خود را اجرا کردید، یک فایل جدید به نام tasks.json در زیر پوشهٔ .vscode در پنجرهٔ کاوشگر (Explorer) ایجاد شد. فایل tasks.json را باز کنید، عبارت “args” را پیدا کنید، و سپس خط “${file}” را در آن بخش پیدا کنید.
بالای خط “${file}” ، یک خط جدید حاوی دستور زیر (هر کدام در یک خط) برای زمان اشکالزدایی (Debug) اضافه کنید:
"-ggdb",
بالای خط “${file}” ، خطوط جدید حاوی دستورات زیر (هر کدام در یک خط) برای ساختهای انتشار (Release) اضافه کنید:
"-O2", "-DNDEBUG",