MESON(1) User Commands MESON(1)

meson - سیستم ساخت نرم‌افزار سریع و کاربرپسند بر پایه Ninja

مِسون (Meson) یک سیستم ساخت است که برای بهینه‌سازی بهره‌وری برنامه‌نویس طراحی شده است. هدف آن دستیابی به این مهم از طریق ارائه پشتیبانی ساده و آماده‌به‌کار از ابزارها و شیوه‌های مدرن توسعه نرم‌افزار، مانند آزمون‌های واحد، گزارش‌های پوشش کد، Valgrind، Ccache و موارد مشابه است.

فایل اجرایی اصلی مِسون زیردستورهای متعددی را برای دسترسی به تمامی قابلیت‌ها فراهم می‌کند.

استفاده از مِسون ساده است و از فرآیند دوفازی متداول در اکثر سیستم‌های ساخت پیروی می‌کند. ابتدا برای پیکربندی ساخت خود، مِسون را اجرا می‌کنید:

meson setup [ options ] [ build directory ] [ source directory ]

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

پس از یک مرحله پیکربندی موفقیت‌آمیز، می‌توانید با اجرای دستور ساخت واقعی در دایرکتوری ساخت، سورس کد را کامپایل کنید. بک‌اند پیش‌فرض مِسون Ninja است که می‌توان آن را به این صورت فراخوانی کرد:

ninja [ target ]

شما فقط یک بار نیاز به اجرای دستور مِسون دارید: زمانی که برای اولین بار دایرکتوری ساخت خود را پیکربندی می‌کنید. پس از آن تنها کافی است دستور ساخت را اجرا کنید. مِسون به طور خودکار تغییرات ایجادشده در درخت سورس کد شما را تشخیص داده و تمامی فایل‌های مورد نیاز برای ساخت پروژه را بازتولید می‌کند.

مِسون شامل گزینه‌های داخلی متعددی است که می‌توان از آن‌ها برای تنظیم پیکربندی یک دایرکتوری ساخت استفاده کرد؛ پروژه‌ها نیز می‌توانند گزینه‌های سفارشی خود را اضافه کنند. برای مقداردهی به گزینه‌ها، از آرگومان خط فرمان -D مانند زیر استفاده کنید:

meson setup -Dopt1=value1 -Dopt2=value2 rest of the command line...

چاپ شماره نسخه
چاپ راهنمای خط فرمان

meson configure روشی را برای پیکربندی یک پروژه مِسون از طریق خط فرمان فراهم می‌کند. استفاده از آن ساده است:

meson configure [ build directory ] [ options to set ]

اگر دایرکتوری ساخت مشخص نشود، دایرکتوری جاری به جای آن استفاده می‌شود.

اگر هیچ پارامتری تنظیم نشود، meson configure مقدار تمامی گزینه‌های ساخت را در کنسول چاپ خواهد کرد.

برای مقداردهی، از آرگومان خط فرمان -D مانند زیر استفاده کنید:

meson configure -Dopt1=value1 -Dopt2=value2

meson dist یک بایگانی انتشار (release archive) تولید می‌کند.

meson dist [ options ]

نمایش این پیام راهنما و خروج
دایرکتوری برای ورود (cd) به آن قبل از اجرا
اجازه دادن به عملیات حتی اگر مخزن حاوی تغییرات ثبت‌نشده (uncommitted) باشد.
لیست جداشده با کاما از انواع بایگانی برای ایجاد. از xztar (پیش‌فرض)، gztar و zip پشتیبانی می‌کند.
گنجاندن سورس کد زیرپروژه‌هایی که برای ساخت استفاده شده‌اند.
بسته‌های تولیدشده ساخته و آزمایش نشوند.

meson install پروژه را نصب می‌کند.

meson install [ options ]

نمایش این پیام راهنما و خروج
دایرکتوری برای ورود (cd) به آن قبل از اجرا
عدم ساخت مجدد قبل از نصب.
فقط بازنویسی فایل‌هایی که قدیمی‌تر از فایل کپی‌شده هستند.
عدم چاپ تک‌تک فایل‌های نصب‌شده.
تنظیم یا لغو متغیر محیطی DESTDIR. (از نسخه 0.57.0)
عملیات نصب واقعی انجام نشود، فقط لاگ‌ها چاپ شوند. (از نسخه 0.57.0)
عدم نصب فایل‌های مربوط به زیرپروژه‌های مشخص‌شده. (از نسخه 0.58.0)
نصب فقط اهدافی که یکی از برچسب‌های داده‌شده را دارند. (از نسخه 0.60.0)
حذف نمادهای خطایابی (strip) اهداف، حتی اگر گزینه strip در مرحله configure تنظیم نشده باشد. (از نسخه 0.62.0)

دستور Meson introspect ابزاری است که برای تسهیل ادغام با سایر ابزارها مانند محیط‌های توسعه یکپارچه (IDE) طراحی شده است. خروجی این دستور در قالب JSON است.

meson introspect [ build directory ] [ option ]

اگر دایرکتوری ساخت مشخص نشود، دایرکتوری جاری به جای آن استفاده می‌شود.

چاپ تمامی اهداف سطح بالا (فایل‌های اجرایی، کتابخانه‌ها و غیره)
چاپ فایل‌های سورس مربوط به هدف داده‌شده
چاپ تمامی فایل‌های تشکیل‌دهنده سیستم ساخت (meson.build، meson.options، meson_options.txt و غیره)
چاپ تمامی آزمون‌های واحد
چاپ راهنمای خط فرمان

meson init یک پروژه جدید ایجاد می‌کند.

meson init [ options ] [ sourcefile... ]

فایل‌های سورس. پیش‌فرض: تمامی فایل‌های شناسایی‌شده در دایرکتوری جاری

نمایش این پیام راهنما و خروج
دایرکتوری برای ورود (cd) به آن قبل از اجرا
نام پروژه. پیش‌فرض: نام دایرکتوری جاری
نام فایل اجرایی. پیش‌فرض: نام پروژه
وابستگی‌ها، جداشده با کاما
زبان پروژه. پیش‌فرض: تشخیص خودکار بر اساس فایل‌های سورس
ساخت پروژه پس از ایجاد
دایرکتوری برای ساخت
اجبار در بازنویسی فایل‌ها و دایرکتوری‌های موجود.
نوع پروژه. پیش‌فرض: پروژه از نوع اجرایی (executable)
نسخه پروژه. پیش‌فرض: 0.1

meson test ابزاری کمکی برای اجرای مجموعه‌های آزمون در پروژه‌های مبتنی بر مِسون است. روش پیش‌فرض برای اجرای آزمون‌ها فراخوانی دستور ساخت پیش‌فرض است:

ninja [ test ]

meson test مجموعه ابزار غنی‌تری را برای اجرای آزمون‌ها فراهم می‌کند.

meson test در صورت استفاده با بک‌اند Ninja، اهداف لازم برای اجرای آزمون‌ها را به صورت خودکار بازسازی می‌کند. در صورت شکست ساخت، meson test کد خروج 125 را برمی‌گرداند. این کد خروج به git bisect run می‌گوید که کامیت جاری را نادیده بگیرد. بنابراین ریشه‌یابی خطاها با git bisect می‌تواند به راحتی بدین شکل انجام شود:

git bisect run meson test -C build_dir

اجرای آزمون‌ها به تعداد دفعات مشخص‌شده
اجرای آزمون‌ها تحت gdb
فهرست کردن تمامی آزمون‌های موجود
فراخوانی تمامی آزمون‌ها از طریق پوشش‌دهنده مشخص‌شده (مانند valgrind)
ورود به دایرکتوری داده‌شده قبل از اجرای آزمون‌ها (باید ریشه دایرکتوری ساخت باشد).
اجرای آزمون‌ها در این مجموعه (suite)
عدم اجرای آزمون‌ها در این مجموعه
عدم اجرای آزمون‌های نام‌برده‌شده
عدم تفکیک stderr و stdout در لاگ‌های آزمون
اجرای بنچمارک‌ها به جای آزمون‌ها
پایه نام فایل برای نوشتن لاگ‌های آزمون
تعداد پردازش‌های موازی برای اجرای آزمون‌ها
عدم تغییر مسیر stdout و stderr (نمایش کامل خروجی)
ضریب مورد استفاده برای مقادیر مهلت زمانی (timeout) آزمون (معمولاً مقداری مانند 100 برای Valgrind)
استفاده از راه‌اندازی آزمون مشخص‌شده
تقسیم آزمون‌ها به NUM_SLICES برش و اجرای برش شماره SLICE. (از نسخه 1.8.0)

ابزار Wraptool یک ابزار کمکی برای مدیریت وابستگی‌های سورس کد با استفاده از سرویس آنلاین wrapdb است.

meson wrap < command > [ options ]

شما باید این دستور را در دایرکتوری ریشه سورس کد پروژه خود اجرا کنید.

فهرست کردن تمامی پروژه‌های موجود
جستجوی پروژه‌ها بر اساس نام
نصب پروژه‌ای با نام داده‌شده
به‌روزرسانی پروژه مشخص‌شده به آخرین نسخه موجود
نمایش نسخه‌های موجود از پروژه مشخص‌شده
نمایش نسخه‌های نصب‌شده و در دسترس زیرپروژه‌های در حال استفاده

meson subprojects برای مدیریت زیرپروژه‌ها استفاده می‌شود.

meson subprojects [ options ] [ command ]

نمایش این پیام راهنما و خروج

به‌روزرسانی تمامی زیرپروژه‌ها از روی فایل‌های wrap
واکشی و سوئیچ به یک شاخه (فقط git)
اطمینان از دریافت زیرپروژه‌ها، حتی اگر در حال استفاده نباشند. زیرپروژه‌هایی که قبلاً دانلود شده‌اند تغییر داده نمی‌شوند. این دستور می‌تواند برای پیش‌دریافت تمام زیرپروژه‌ها و جلوگیری از دانلود حین پیکربندی (configure) استفاده شود.
اجرای یک دستور در دایرکتوری هر زیرپروژه.
حذف تمامی آثار و خروجی‌های زیرپروژه‌های مبتنی بر wrap
مدیریت لایه packagefiles

meson rewrite تعریف پروژه را تغییر می‌دهد.

meson rewrite [ options ] [ command ]

نمایش این پیام راهنما و خروج
مسیر به دایرکتوری سورس کد.
فعال‌سازی خروجی با جزئیات کامل
صرف‌نظر کردن از خطاها به جای متوقف ساختن فرآیند

تغییر دادن یک هدف (target)
تغییر دادن آرگومان‌های کلیدواژه‌ای (keyword arguments)
تغییر دادن گزینه‌های پیش‌فرض پروژه
اجرای یک آرایه JSON از دستورات

meson compile پروژه را می‌سازد.

meson compile [ options ] [ TARGET... ]

اهداف برای ساخت. هدف ساختار زیر را دارد: [PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE].

نمایش این پیام راهنما و خروج
پاک‌سازی دایرکتوری ساخت.
دایرکتوری برای ورود (cd) به آن قبل از اجرا
تعداد پردازش‌های کاری (worker jobs) برای اجرا (در صورت پشتیبانی). اگر مقدار کمتر از ۱ باشد، برنامه ساخت به صورت حدسی تعیین خواهد کرد.
میانگین بار سیستم (load average) برای حفظ و تلاش جهت عدم فراتر رفتن از آن (در صورت پشتیبانی).
نمایش خروجی با جزئیات بیشتر.
آرگومان‌هایی برای انتقال به `ninja` (فقط روی بک‌اند `ninja` اعمال می‌شود).
آرگومان‌هایی برای انتقال به `msbuild` (فقط روی بک‌اند `vs` اعمال می‌شود).
آرگومان‌هایی برای انتقال به `xcodebuild` (فقط روی بک‌اند `xcode` اعمال می‌شود).

meson devenv دستورات را در محیط توسعه‌دهنده اجرا می‌کند.

meson devenv [ options ] [ command ]

دستور برای اجرا در محیط توسعه‌دهنده (پیش‌فرض: پوسته تعاملی)

نمایش این پیام راهنما و خروج
مسیر به دایرکتوری ساخت
دایرکتوری برای ورود (cd) به آن قبل از اجرا (پیش‌فرض: builddir، از نسخه 1.0.0)
فقط چاپ متغیرهای محیطی مورد نیاز (از نسخه 0.62.0) یک مسیر فایل اختیاری را می‌پذیرد (از نسخه 1.1.0)
فرمت استفاده‌شده با --dump (از نسخه 1.1.0)

meson env2mfile محیط جاری را به یک فایل cross یا native تبدیل می‌کند.

meson env2mfile [ options ]

نمایش این پیام راهنما و خروج
معماری dpkg برای تولید.
یک پسوند نسخه خاص برای gcc در صورت لزوم.
فایل خروجی.
تولید یک فایل کامپایل چندسکویی (cross compilation).
تولید یک فایل کامپایل بومی (native compilation).
تعریف سیستم برای کامپایل چندسکویی.
تعریف زیرسیستم برای کامپایل چندسکویی.
تعریف کرنل برای کامپایل چندسکویی.
تعریف پردازنده (cpu) برای کامپایل چندسکویی.
تعریف خانواده پردازنده (cpu family) برای کامپایل چندسکویی.
تعریف ترتیب بایت‌ها (endianness) برای کامپایل چندسکویی.

meson format یک فایل سورس مِسون را قالب‌بندی (فرمت) می‌کند.

meson format [ options ] [ sources... ]

فایل‌های سورس مِسون

نمایش این پیام راهنما و خروج
خروج با کد 1 در صورتی که فایل‌ها توسط meson format تغییر داده شوند
قالب‌بندی فایل‌ها درجا (در خود فایل‌ها)
پیمایش بازگشتی زیرپوشه‌ها (نیازمند گزینه --check-only یا --inplace)
خواندن پیکربندی از meson.format
تلاش برای خواندن پیکربندی از .editorconfig
فایل خروجی (مستلزم داشتن دقیقاً یک ورودی)

اگر مِسون را بدون زیردستور اجرا کنید، فرض می‌کند که منظور شما meson setup بوده است. با این حال، این نحوه نگارش منسوخ شده است و مِسون در صورت استفاده از آن یک پیام هشدار چاپ می‌کند. شما همیشه باید به صراحت از meson setup استفاده کنید، نه اینکه به رفتار پیش‌فرض اتکا نمایید.

0
موفقیت‌آمیز.
1
خطای استفاده، یا خطای پارس یا اجرای meson.build.
2
خطای داخلی.
125
دستور meson test نتوانست اهداف مورد نیاز را بازسازی کند.

https://mesonbuild.com

https://wrapdb.mesonbuild.com

August 2026 meson 1.12.0