MESON(1) User Commands MESON(1) نام (NAME) meson - سیستم ساخت نرم‌افزار سریع و کاربرپسند بر پایه Ninja توضیحات (DESCRIPTION) مِسون (Meson) یک سیستم ساخت است که برای بهینه‌سازی بهره‌وری برنامه‌نویس طراحی شده است. هدف آن دستیابی به این مهم از طریق ارائه پشتیبانی ساده و آماده‌به‌کار از ابزارها و شیوه‌های مدرن توسعه نرم‌افزار، مانند آزمون‌های واحد، گزارش‌های پوشش کد، Valgrind، Ccache و موارد مشابه است. فایل اجرایی اصلی مِسون زیردستورهای متعددی را برای دسترسی به تمامی قابلیت‌ها فراهم می‌کند. دستور setup استفاده از مِسون ساده است و از فرآیند دوفازی متداول در اکثر سیستم‌های ساخت پیروی می‌کند. ابتدا برای پیکربندی ساخت خود، مِسون را اجرا می‌کنید: meson setup [ options ] [ build directory ] [ source directory ] توجه داشته باشید که دایرکتوری ساخت باید با دایرکتوری سورس کد متفاوت باشد. مِسون از ساخت درون دایرکتوری سورس پشتیبانی نمی‌کند و تلاش برای انجام این کار منجر به خطا خواهد شد. پس از یک مرحله پیکربندی موفقیت‌آمیز، می‌توانید با اجرای دستور ساخت واقعی در دایرکتوری ساخت، سورس کد را کامپایل کنید. بک‌اند پیش‌فرض مِسون Ninja است که می‌توان آن را به این صورت فراخوانی کرد: ninja [ target ] شما فقط یک بار نیاز به اجرای دستور مِسون دارید: زمانی که برای اولین بار دایرکتوری ساخت خود را پیکربندی می‌کنید. پس از آن تنها کافی است دستور ساخت را اجرا کنید. مِسون به طور خودکار تغییرات ایجادشده در درخت سورس کد شما را تشخیص داده و تمامی فایل‌های مورد نیاز برای ساخت پروژه را بازتولید می‌کند. مِسون شامل گزینه‌های داخلی متعددی است که می‌توان از آن‌ها برای تنظیم پیکربندی یک دایرکتوری ساخت استفاده کرد؛ پروژه‌ها نیز می‌توانند گزینه‌های سفارشی خود را اضافه کنند. برای مقداردهی به گزینه‌ها، از آرگومان خط فرمان -D مانند زیر استفاده کنید: meson setup -Dopt1=value1 -Dopt2=value2 rest of the command line... گزینه‌ها (options): --version چاپ شماره نسخه --help چاپ راهنمای خط فرمان دستور configure meson configure روشی را برای پیکربندی یک پروژه مِسون از طریق خط فرمان فراهم می‌کند. استفاده از آن ساده است: meson configure [ build directory ] [ options to set ] اگر دایرکتوری ساخت مشخص نشود، دایرکتوری جاری به جای آن استفاده می‌شود. اگر هیچ پارامتری تنظیم نشود، meson configure مقدار تمامی گزینه‌های ساخت را در کنسول چاپ خواهد کرد. برای مقداردهی، از آرگومان خط فرمان -D مانند زیر استفاده کنید: meson configure -Dopt1=value1 -Dopt2=value2 دستور dist meson dist یک بایگانی انتشار (release archive) تولید می‌کند. meson dist [ options ] گزینه‌ها (options): -h, --help نمایش این پیام راهنما و خروج -C WD دایرکتوری برای ورود (cd) به آن قبل از اجرا --allow-dirty اجازه دادن به عملیات حتی اگر مخزن حاوی تغییرات ثبت‌نشده (uncommitted) باشد. --formats FORMATS لیست جداشده با کاما از انواع بایگانی برای ایجاد. از xztar (پیش‌فرض)، gztar و zip پشتیبانی می‌کند. --include-subprojects گنجاندن سورس کد زیرپروژه‌هایی که برای ساخت استفاده شده‌اند. --no-tests بسته‌های تولیدشده ساخته و آزمایش نشوند. دستور install meson install پروژه را نصب می‌کند. meson install [ options ] گزینه‌ها (options): -h, --help نمایش این پیام راهنما و خروج -C WD دایرکتوری برای ورود (cd) به آن قبل از اجرا --no-rebuild عدم ساخت مجدد قبل از نصب. --only-changed فقط بازنویسی فایل‌هایی که قدیمی‌تر از فایل کپی‌شده هستند. --quiet عدم چاپ تک‌تک فایل‌های نصب‌شده. --destdir DESTDIR تنظیم یا لغو متغیر محیطی DESTDIR. (از نسخه 0.57.0) --dry-run, -n عملیات نصب واقعی انجام نشود، فقط لاگ‌ها چاپ شوند. (از نسخه 0.57.0) --skip-subprojects [SKIP_SUBPROJECTS] عدم نصب فایل‌های مربوط به زیرپروژه‌های مشخص‌شده. (از نسخه 0.58.0) --tags TAGS نصب فقط اهدافی که یکی از برچسب‌های داده‌شده را دارند. (از نسخه 0.60.0) --strip حذف نمادهای خطایابی (strip) اهداف، حتی اگر گزینه strip در مرحله configure تنظیم نشده باشد. (از نسخه 0.62.0) دستور introspect دستور Meson introspect ابزاری است که برای تسهیل ادغام با سایر ابزارها مانند محیط‌های توسعه یکپارچه (IDE) طراحی شده است. خروجی این دستور در قالب JSON است. meson introspect [ build directory ] [ option ] اگر دایرکتوری ساخت مشخص نشود، دایرکتوری جاری به جای آن استفاده می‌شود. گزینه‌ها (options): --targets چاپ تمامی اهداف سطح بالا (فایل‌های اجرایی، کتابخانه‌ها و غیره) --target-files چاپ فایل‌های سورس مربوط به هدف داده‌شده --buildsystem-files چاپ تمامی فایل‌های تشکیل‌دهنده سیستم ساخت (meson.build، meson.options، meson_options.txt و غیره) --tests چاپ تمامی آزمون‌های واحد --help چاپ راهنمای خط فرمان دستور init meson init یک پروژه جدید ایجاد می‌کند. meson init [ options ] [ sourcefile... ] آرگومان‌های مکانی (positional arguments): sourcefile... فایل‌های سورس. پیش‌فرض: تمامی فایل‌های شناسایی‌شده در دایرکتوری جاری گزینه‌ها (options): -h, --help نمایش این پیام راهنما و خروج -C WD دایرکتوری برای ورود (cd) به آن قبل از اجرا -n NAME, --name NAME نام پروژه. پیش‌فرض: نام دایرکتوری جاری -e EXECUTABLE, --executable EXECUTABLE نام فایل اجرایی. پیش‌فرض: نام پروژه -d DEPS, --deps DEPS وابستگی‌ها، جداشده با کاما -l {c,cpp,cs,cuda,d,fortran,java,objc,objcpp,rust,vala}, --language {c,cpp,cs,cuda,d,fortran,java,objc,objcpp,rust,vala} زبان پروژه. پیش‌فرض: تشخیص خودکار بر اساس فایل‌های سورس -b, --build ساخت پروژه پس از ایجاد --builddir BUILDDIR دایرکتوری برای ساخت -f, --force اجبار در بازنویسی فایل‌ها و دایرکتوری‌های موجود. --type {executable,library} نوع پروژه. پیش‌فرض: پروژه از نوع اجرایی (executable) --version VERSION نسخه پروژه. پیش‌فرض: 0.1 دستور test 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 گزینه‌ها (options): --repeat اجرای آزمون‌ها به تعداد دفعات مشخص‌شده --gdb اجرای آزمون‌ها تحت gdb --list فهرست کردن تمامی آزمون‌های موجود --wrapper فراخوانی تمامی آزمون‌ها از طریق پوشش‌دهنده مشخص‌شده (مانند valgrind) -C ورود به دایرکتوری داده‌شده قبل از اجرای آزمون‌ها (باید ریشه دایرکتوری ساخت باشد). --suite اجرای آزمون‌ها در این مجموعه (suite) --no-suite عدم اجرای آزمون‌ها در این مجموعه --exclude عدم اجرای آزمون‌های نام‌برده‌شده --no-stdsplit عدم تفکیک stderr و stdout در لاگ‌های آزمون --benchmark اجرای بنچمارک‌ها به جای آزمون‌ها --logbase پایه نام فایل برای نوشتن لاگ‌های آزمون --num-processes تعداد پردازش‌های موازی برای اجرای آزمون‌ها --verbose عدم تغییر مسیر stdout و stderr (نمایش کامل خروجی) -t ضریب مورد استفاده برای مقادیر مهلت زمانی (timeout) آزمون (معمولاً مقداری مانند 100 برای Valgrind) --setup استفاده از راه‌اندازی آزمون مشخص‌شده --slice SLICE/NUM_SLICES تقسیم آزمون‌ها به NUM_SLICES برش و اجرای برش شماره SLICE. (از نسخه 1.8.0) دستور wrap ابزار Wraptool یک ابزار کمکی برای مدیریت وابستگی‌های سورس کد با استفاده از سرویس آنلاین wrapdb است. meson wrap < command > [ options ] شما باید این دستور را در دایرکتوری ریشه سورس کد پروژه خود اجرا کنید. دستورات (commands): list فهرست کردن تمامی پروژه‌های موجود search جستجوی پروژه‌ها بر اساس نام install نصب پروژه‌ای با نام داده‌شده update به‌روزرسانی پروژه مشخص‌شده به آخرین نسخه موجود info نمایش نسخه‌های موجود از پروژه مشخص‌شده status نمایش نسخه‌های نصب‌شده و در دسترس زیرپروژه‌های در حال استفاده دستور subprojects meson subprojects برای مدیریت زیرپروژه‌ها استفاده می‌شود. meson subprojects [ options ] [ command ] گزینه‌ها (options): -h, --help نمایش این پیام راهنما و خروج دستورات (commands): update به‌روزرسانی تمامی زیرپروژه‌ها از روی فایل‌های wrap checkout واکشی و سوئیچ به یک شاخه (فقط git) download اطمینان از دریافت زیرپروژه‌ها، حتی اگر در حال استفاده نباشند. زیرپروژه‌هایی که قبلاً دانلود شده‌اند تغییر داده نمی‌شوند. این دستور می‌تواند برای پیش‌دریافت تمام زیرپروژه‌ها و جلوگیری از دانلود حین پیکربندی (configure) استفاده شود. foreach اجرای یک دستور در دایرکتوری هر زیرپروژه. purge حذف تمامی آثار و خروجی‌های زیرپروژه‌های مبتنی بر wrap packagefiles مدیریت لایه packagefiles دستور rewrite meson rewrite تعریف پروژه را تغییر می‌دهد. meson rewrite [ options ] [ command ] گزینه‌ها (options): -h, --help نمایش این پیام راهنما و خروج -s SRCDIR, --sourcedir SRCDIR مسیر به دایرکتوری سورس کد. -V, --verbose فعال‌سازی خروجی با جزئیات کامل -S, --skip-errors صرف‌نظر کردن از خطاها به جای متوقف ساختن فرآیند دستورات (commands): target (tgt) تغییر دادن یک هدف (target) kwargs تغییر دادن آرگومان‌های کلیدواژه‌ای (keyword arguments) default-options (def) تغییر دادن گزینه‌های پیش‌فرض پروژه command (cmd) اجرای یک آرایه JSON از دستورات دستور compile meson compile پروژه را می‌سازد. meson compile [ options ] [ TARGET... ] آرگومان‌های مکانی (positional arguments): TARGET اهداف برای ساخت. هدف ساختار زیر را دارد: [PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]. گزینه‌ها (options): -h, --help نمایش این پیام راهنما و خروج --clean پاک‌سازی دایرکتوری ساخت. -C WD دایرکتوری برای ورود (cd) به آن قبل از اجرا -j JOBS, --jobs JOBS تعداد پردازش‌های کاری (worker jobs) برای اجرا (در صورت پشتیبانی). اگر مقدار کمتر از ۱ باشد، برنامه ساخت به صورت حدسی تعیین خواهد کرد. -l LOAD_AVERAGE, --load-average LOAD_AVERAGE میانگین بار سیستم (load average) برای حفظ و تلاش جهت عدم فراتر رفتن از آن (در صورت پشتیبانی). -v, --verbose نمایش خروجی با جزئیات بیشتر. --ninja-args NINJA_ARGS آرگومان‌هایی برای انتقال به `ninja` (فقط روی بک‌اند `ninja` اعمال می‌شود). --vs-args VS_ARGS آرگومان‌هایی برای انتقال به `msbuild` (فقط روی بک‌اند `vs` اعمال می‌شود). --xcode-args XCODE_ARGS آرگومان‌هایی برای انتقال به `xcodebuild` (فقط روی بک‌اند `xcode` اعمال می‌شود). دستور devenv meson devenv دستورات را در محیط توسعه‌دهنده اجرا می‌کند. meson devenv [ options ] [ command ] آرگومان‌های مکانی (positional arguments): command دستور برای اجرا در محیط توسعه‌دهنده (پیش‌فرض: پوسته تعاملی) گزینه‌ها (options): -h, --help نمایش این پیام راهنما و خروج -C BUILDDIR مسیر به دایرکتوری ساخت --workdir WORKDIR, -w WORKDIR دایرکتوری برای ورود (cd) به آن قبل از اجرا (پیش‌فرض: builddir، از نسخه 1.0.0) --dump [DUMP] فقط چاپ متغیرهای محیطی مورد نیاز (از نسخه 0.62.0) یک مسیر فایل اختیاری را می‌پذیرد (از نسخه 1.1.0) --dump-format {sh,export,vscode} فرمت استفاده‌شده با --dump (از نسخه 1.1.0) دستور env2mfile meson env2mfile محیط جاری را به یک فایل cross یا native تبدیل می‌کند. meson env2mfile [ options ] گزینه‌ها (options): -h, --help نمایش این پیام راهنما و خروج --debarch DEBARCH معماری dpkg برای تولید. --gccsuffix GCCSUFFIX یک پسوند نسخه خاص برای gcc در صورت لزوم. -o OUTFILE فایل خروجی. --cross تولید یک فایل کامپایل چندسکویی (cross compilation). --native تولید یک فایل کامپایل بومی (native compilation). --system SYSTEM تعریف سیستم برای کامپایل چندسکویی. --subsystem SUBSYSTEM تعریف زیرسیستم برای کامپایل چندسکویی. --kernel KERNEL تعریف کرنل برای کامپایل چندسکویی. --cpu CPU تعریف پردازنده (cpu) برای کامپایل چندسکویی. --cpu-family CPU_FAMILY تعریف خانواده پردازنده (cpu family) برای کامپایل چندسکویی. --endian {big,little} تعریف ترتیب بایت‌ها (endianness) برای کامپایل چندسکویی. دستور format meson format یک فایل سورس مِسون را قالب‌بندی (فرمت) می‌کند. meson format [ options ] [ sources... ] آرگومان‌های مکانی (positional arguments): sources... فایل‌های سورس مِسون گزینه‌ها (options): -h, --help نمایش این پیام راهنما و خروج -q, --check-only خروج با کد 1 در صورتی که فایل‌ها توسط meson format تغییر داده شوند -i, --inplace قالب‌بندی فایل‌ها درجا (در خود فایل‌ها) -r, --recursive پیمایش بازگشتی زیرپوشه‌ها (نیازمند گزینه --check-only یا --inplace) -c meson.format, --configuration meson.format خواندن پیکربندی از meson.format -e, --editor-config تلاش برای خواندن پیکربندی از .editorconfig -o OUTPUT, --output OUTPUT فایل خروجی (مستلزم داشتن دقیقاً یک ورودی) هنگامی که هیچ دستوری مشخص نشده است اگر مِسون را بدون زیردستور اجرا کنید، فرض می‌کند که منظور شما meson setup بوده است. با این حال، این نحوه نگارش منسوخ شده است و مِسون در صورت استفاده از آن یک پیام هشدار چاپ می‌کند. شما همیشه باید به صراحت از meson setup استفاده کنید، نه اینکه به رفتار پیش‌فرض اتکا نمایید. وضعیت خروج (EXIT STATUS) 0 موفقیت‌آمیز. 1 خطای استفاده، یا خطای پارس یا اجرای meson.build. 2 خطای داخلی. 125 دستور meson test نتوانست اهداف مورد نیاز را بازسازی کند. همچنین ببینید (SEE ALSO) https://mesonbuild.com https://wrapdb.mesonbuild.com meson 1.12.0 August 2026 MESON(1)