| 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):
دستور 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)
- نصب فقط اهدافی که یکی از برچسبهای دادهشده را دارند. (از نسخه 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):
دستور 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)
| August 2026 | meson 1.12.0 |