هدف اصلی توسعه Meson ارائه سرعت بالا در فرآیند مونتاژ همراه با راحتی و سهولت استفاده است. به جای ابزار make، ساخت پیش فرض از جعبه ابزار استفاده می کند
کامپایل متقابل و ساخت بر روی لینوکس، macOS و ویندوز با استفاده از GCC، Clang، Visual Studio و سایر کامپایلرها پشتیبانی می شود. امکان ساخت پروژه به زبان های برنامه نویسی مختلف از جمله C، C++، Fortran، Java و Rust وجود دارد. حالت ساخت افزایشی پشتیبانی میشود، که در آن فقط مؤلفههایی که مستقیماً با تغییرات ایجاد شده از آخرین ساخت مرتبط هستند، بازسازی میشوند. از Meson می توان برای تولید بیلدهای تکرارپذیر استفاده کرد که در آن اجرای بیلد در محیط های مختلف منجر به تولید فایل های اجرایی کاملاً یکسان می شود.
اصلی
- اضافه شدن پشتیبانی برای ساخت شفاف پروژه های موجود که از اسکریپت های ساخت CMake استفاده می کنند. Meson اکنون میتواند مستقیماً زیر پروژههای ساده (مانند کتابخانههای منفرد) را با استفاده از ماژول CMake، مشابه زیر پروژههای استاندارد بسازد (از جمله پروژههای فرعی CMake را میتوان در فهرست زیر پروژهها قرار داد).
- برای همه کامپایلرهای استفاده شده، آزمایش اولیه از طریق مونتاژ و اجرای فایل های آزمایشی ساده (بررسی سلامت عقل) گنجانده شده است، نه محدود به آزمایش پرچم های مشخص شده توسط کاربر برای کامپایلرهای متقابل (از این پس، کامپایلرهای بومی پلتفرم فعلی نیز بررسی می شوند) .
- قابلیت تعریف گزینههای خط فرمان مورد استفاده در کامپایل متقابل، با اتصال با تعیین پیشوند پلت فرم قبل از گزینه اضافه شده است. قبلاً گزینههای خط فرمان فقط ساختهای بومی را پوشش میدادند و نمیتوانستند برای کامپایل متقابل مشخص شوند. اکنون گزینه های خط فرمان صرف نظر از اینکه به صورت بومی یا متقابل کامپایل می سازید اعمال می شوند و اطمینان حاصل می شود که ساخت های بومی و متقاطع نتایج یکسانی دارند.
- قابلیت تعیین پرچم "--cross-file" را بیش از یک بار در خط فرمان برای لیست کردن چندین فایل متقابل اضافه کرد.
- اضافه شدن پشتیبانی از کامپایلر ICL (کامپایلر Intel C/C++) برای پلتفرم ویندوز (ICL.EXE و ifort).
- اضافه شدن پشتیبانی اولیه جعبه ابزار برای CPU Xtensa (xt-xcc، xt-xc++، xt-nm).
- متد "get_variable" به شی "وابستگی" اضافه شده است، که به شما امکان می دهد بدون در نظر گرفتن نوع وابستگی فعلی، مقدار یک متغیر را بدست آورید (به عنوان مثال، dep.get_variable(pkg-config: 'var- name', cmake : 'COP_VAR_NAME))؛
- یک آرگومان گزینه های اسمبلی هدف جدید، "link_language" اضافه شد تا به صراحت زبان مورد استفاده در هنگام فراخوانی پیوند دهنده را مشخص کند. به عنوان مثال، یک برنامه اصلی فرترن میتواند کد C/C++ را فراخوانی کند، که بهطور خودکار C/C++ را در زمانی که باید از پیوند فرترن استفاده شود، انتخاب میکند.
- نحوه مدیریت پرچم های پیش پردازنده CPPFLAGS تغییر کرده است. در حالی که Meson قبلاً CPPFLAGS و پرچمهای کامپایل مخصوص زبان (CFLAGS، CXXFLAGS) را به طور جداگانه ذخیره میکرد، اکنون آنها بهصورت جداییناپذیر پردازش میشوند و پرچمهای فهرستشده در CPPFLAGS به عنوان منبع دیگری از پرچمهای تلفیقی برای زبانهایی که از آنها پشتیبانی میکنند استفاده میشوند.
- خروجی custom_target و custom_target[i] اکنون می تواند به عنوان آرگومان در عملیات link_with و link_whole استفاده شود.
- ژنراتورها اکنون این توانایی را دارند که وابستگی های اضافی را با استفاده از گزینه "وابسته" مشخص کنند (به عنوان مثال، generator(program_runner, output: ['@[ایمیل محافظت شده]']، بستگی دارد: exe))؛
- یک گزینه استاتیک به find_library اضافه کرد تا به جستجو اجازه دهد فقط کتابخانههایی که به صورت ایستا مرتبط هستند را شامل شود.
- برای python.find_installation، توانایی تعیین وجود یک ماژول پایتون داده شده برای یک نسخه خاص از Python اضافه شده است.
- اضافه شدن ماژول جدید unstable-kconfig برای تجزیه فایل های kconfig.
- یک دستور جدید "subprojects foreach" اضافه شده است که دستوری را با آرگومان ها می گیرد و آن را در همه فهرست های زیر پروژه اجرا می کند.
منبع: opennet.ru