X.Org Serverá Mesaá Lighttpdá systemdá GStreamerá Waylandá GNOME ááŸáá·áº GTK á ááá·áº ááá±á¬áá»ááºáá»á¬ážááᯠáááºáá±á¬ááºáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯ááá·áº Meson 1.3.0 áááºáá±á¬ááºááŸá¯á áá áºá¡á¬áž áá¯ááºáá±ááá¯ááºáá«áááºá Meson áá¯ááºááᯠPython ááŒáá·áºáá±ážáá¬ážáá¬ážááŒá®áž Apache 2.0 ááá¯ááºá ááºá¡á±á¬ááºááœáẠááá¯ááºá ááºááá¬ážáááºá
Meson á á¡ááá ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áááºážááá¯ááºááẠá¡áááºááŒá±ááœááºáá°ááŸá¯ááŸáá·áº á¡áá¯á¶ážááŒá¯áááœááºáá°ááŸá¯ááá¯á·ááŸáá·áºá¡áá° áá±á«ááºážá ááºáá¬ážáá±á¬ ááŒááºááŸá¯ááºážááŒáá·áº áááºáááºááŸá¯áá¯ááºáááºážá ááºááᯠáá¶á·ááá¯ážáá±ážáááºááŒá áºáááºá áááºáá®ážááá·áºá¡á á¬ážá áááºáá±á¬ááºááŸá¯ááẠáá°áááºážá¡ááá¯ááºáž Ninja toolkit ááᯠá¡áá¯á¶ážááŒá¯áá±á¬áºáááºáž xcode ááŸáá·áº VisualStudio áá²á·ááá¯á·áá±á¬ á¡ááŒá¬ážáá±á¬ backend áá»á¬ážááá¯áááºáž á¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá á áá áºááœáẠááŒáá·áºáá±ááŸá¯áá»á¬ážá¡ááœáẠáááºáá±á·áá»áºáá»á¬ážáááºáá±á¬ááºáááºá¡ááœáẠMeson ááá¯á¡áá¯á¶ážááŒá¯ááẠááá·áºá¡á¬áž ááœáá·áºááŒá¯ááá·áº áááºáááºáá¬ážááá·áº multi-platform ááŸá®ááá¯ááŸá¯ááá¯ááºááœááºáááááá¬áá áºáá¯ááŸááááºá á ááºážáá±ážááœá²á ááºážáá»ááºážáá»á¬ážááᯠááá¯ážááŸááºážáá±á¬ ááá¯ááááºáž-áá®ážááá·áºáá¬áá¬á áá¬ážááŒáá·áº áááºááŸááºáá¬ážááŒá®áž áááºážááá¯á·ááᯠá¡áá¯á¶ážááŒá¯áá°á០áá±á¬ááºážá áœá¬áááºááŸá¯ááá¯ááºáᬠáá¬ážáááºááá¯ááºááẠ(á á¬áá±ážááá¬áá»á¬ážá á¡áá°á¡áá¡áá áá±á¬á·ááºáá²áá±ážáá¬ážáá°ááẠá¡áááºážáá¯á¶áž á¡áá»áááºá¡ááá¯ááºážá¡áá¬áá áºáá¯á¡áá á ááºážáá»ááºážáá»á¬ážááᯠáá¯á¶ážá áœá²ááá·áºáááº)á
GCCá Clangá Visual Studio ááŸáá·áº á¡ááŒá¬ážáá±á¬ compilers áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á Linuxá Illumos/Solarisá FreeBSDá NetBSDá DragonFly BSDá Haikuá macOS ááŸáá·áº Windows ááá¯á·ááœáẠá¡ááŒááºá¡ááŸááºá á¯á ááºážááŒááºážááŸáá·áº áááºáá±á¬ááºááŒááºážááᯠáá¶á·ááá¯ážáá¬ážáá«áááºá Cá C++á Fortraná Java ááŸáá·áº Rust á¡áá«á¡ááẠá¡áá»áá¯ážáá»áá¯ážáá±á¬ áááá¯ááááºážáááºážáá¬áá¬á áá¬ážáá»á¬ážááŒáá·áº ááá±á¬áá»ááºáá»á¬ážááᯠáááºáá±á¬ááºááá¯ááºáááºá áá±á¬ááºáá¯á¶ážáááºáá±á¬ááºááŸá¯áá±á¬ááºááá¯ááºážááœáẠááŒá¯áá¯ááºáá¬ážáá±á¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááŸáá·áº ááá¯ááºááá¯ááºáááºááá¯ááºááá·áº á¡á áááºá¡ááá¯ááºážáá»á¬ážááá¯áᬠááá¯ážááŒáŸáá·áºáááºáá±á¬ááºáá¯ááºááᯠáá¶á·ááá¯ážáá¬ážáááºá ááá°áá®áá±á¬áááºáááºážáá»ááºáá»á¬ážááœáẠáááºáá±á¬ááºááŸá¯ááᯠáá¯ááºáá±á¬ááºááŒááºážááŒáá·áº áá¯á¶ážááááºáá°áááºáá»áŸáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠááŒá áºáá±á«áºá á±ááá·áº áááºááá²áá²áá¯ááºáá±á¬ááºááá¯ááºáá±á¬ áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáááºáá®ážáááºá¡ááœáẠMeson ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
Meson 1.3 á á¡ááá áá®ááœááºáááºážáá áºááŸá¯áá»á¬áž
- compiler ááááá±ážáá»ááºáá»á¬ážááᯠá¡ááŸá¬ážáá»á¬ážá¡ááŒá ẠááŸááºáá°ááá·áº compiler check method compiler.compiles(), compiler.links() ááŸáá·áº compiler.run() ááœáẠ"werror: true" ááᯠááá·áºááœááºážáá²á·ááẠ(ááááá±ážáá»ááºááá«áá² áá¯ááºááᯠáááºáá±á¬ááºáá¬ážááŒá±á¬ááºáž á á áºáá±ážáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá )
- ááŒáá¯áááºáááá¯áááºáá¬á¡á¬ážááŒáá·áº áááºá¹áá±áá¡áááá¹áá«ááºááᯠá á áºáá±ážááẠhas_define áááºážáááºážááᯠááá·áºááœááºážáá¬ážáááºá
- macro_name áá«áá¬áá®áá¬ááᯠconfigure_file() áá¯ááºáá±á¬ááºáá»ááºááœáẠááá·áºááœááºážáá¬ážááŒá®ážá â#includeâ (âinclude guardsâ) ááŸáááá·áº ááŸá áºáááºáá»áááºáááºááŸá¯áá»á¬ážá¡ááœáẠmacro protection ááᯠC language ááœáẠmacro áá¯á¶á á¶ááŒáá·áº áá®ááá¯ááºážáá¯ááºáá¬ážááŒááºáž (ááá¯ááºáá»á¬ážááᯠdynamic ááŒáá·áº configure ááŒá¯áá¯ááºááŒááºážááᯠááá¯ážááŸááºážá á±áá«áááºá áááºáááá¯á¡áááºáá»á¬áž)á
- á¡ááœááºáá±á¬áºáááºá¡áá áºááᯠconfigure_file() - JSON ("output_format: json") ááœáẠááá·áºááœááºážáá¬ážáá«áááºá
- c_std ááŸáá·áº cpp_std ááá·áºáááºáá±á¬ááºáá»á¬ážááœáẠáááºááá¯ážáá»á¬ážá á¬áááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºá áœááºážááᯠáá±á«ááºážááá·áºáá²á·ááẠ(á¥ááá¬á âdefault_options: 'c_std=gnu11,c11â²')á
- ááá¯ááºáá»á¬ážááá¯áá¯ááºáá±á¬ááºááẠCustomTarget ááá¯á¡áá¯á¶ážááŒá¯ááá·áº module áá»á¬ážááœááºá ninja utility á០áááºáá±á·áá»áºá¡ááœááºááᯠá áááºááŒáá¯ááºááŒááºáááºááá¯ááºááŸá¯ááᯠááá·áºááœááºážáá¬ážáááºá
- build_target "jar" ááᯠáááºááá·áºááá¯ááºááŒá®áž áááºážá¡á á¬áž "jar()" áá±á«áºááá¯ááŸá¯ááᯠá¡ááŒá¶ááŒá¯áá¬ážáááºá
- áá»ááºááá±áá¬á០ááá·áºááœááºážááŒááºážá¡á¬áž áá¯ááºáá±á¬ááºáá±ážááá·áº áááºáááºážáá»ááºááŒá±á¬ááºážáá²ááŸá¯á¡á¬áž áááºááŸááºááẠ'env' áá«áá¬áá®áá¬ááᯠgenerator.process() áááºážáááºážááá¯á· áá±á«ááºážááá·áºáá¬ážáá«áááºá
- executables áá»á¬ážááŸáá·áºáááºá ááºáá±á¬ build áá áºááŸááºá¡áááºáá»á¬ážááᯠáááºááŸááºáá±á¬á¡áá«á "executable('foo', 'main.c', name_suffix: 'bar')" áá²á·ááá¯á·áá±á¬ áá±á¬ááºáááºááœá²áá»á¬ážááᯠáá°áá®áá±á¬ directory ááœáẠáá±á¬ááºááẠexecutable áá»á¬ážááᯠáá¯ááºáá¯ááºááẠááœáá·áºááŒá¯áá¬ážáááºá
- shared_module().
- á¡áá¯ááºááá±á¬áá»ááºááœá²á¡ááœáẠáá¯á¶áá±ááœá±ážáá»ááºááŸá¯áá»á¬ážáááºááŸááºááẠfind_program() áá¯ááºáá±á¬ááºáá»ááºááœáẠ'default_options' áá«áá¬áá®áá¬ááᯠááá·áºááœááºážáá²á·áááºá
- ááááááºážááŒá±á¬ááºážááŸááá»áŸáẠáááá¡ááŒááºážá¡áá¯á¶á¡ááœáẠááœá±áá»áá¯ážáááºážááŒá±á¬ááºážááᯠááŒááºáá±ážááá·áº fs.relative_to() áááºážáááºážááᯠááá·áºááœááºážáá¬ážáááºá á¥ááá¬á "fs.relative_to('/prefix/lib'á '/prefix/bin') == '../lib')"á
- á¡á±á¬ááºáá«_symlinks áá±á¬ááºáá»á¬ážááᯠinstall_data(), install_headers() ááŸáá·áº install_subdir() áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááá¯á· áá±á«ááºážááá·áºááá¯ááºáááºá áááºááŸááºááá¯ááºáá±á¬á¡áá«á áááºá¹áá±áááá·áºááºáá»á¬ážááᯠááá¯ááºáá¬áá«áááºá
- á á¬áá¬ážááᯠáá¯áááŒáá·áº áááºááá¯ááºááŒáá·áºááẠ"ááŒáá·áºá áœááº" áá«áá¬áá®áá¬ááᯠint.to_string() áááºážáááºážááá¯á· áá±á«ááºážááá·áºáá¬ážáá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá n=3 á¡ááœáẠáá±á«áºááá¯áá±á¬ áááºáá±á·áá»áº(n.to_string(fill: 4)) ááẠ"004" áá°áá±á¬ á á¬ááŒá±á¬ááºážááᯠáá¯ááºáá±ážáááá·áºáááºá
- clang-tidy utility ááᯠ"-fix" á¡áá¶ááŒáá·áº áá¯ááºáá±á¬ááºáá±ážááá·áº áá áºááŸááºá¡áá áºá clang-tidy-fix ááᯠáááºááá·áºáá¬ážáááºá
- á á¯áá±ážááŸá¯áá áºááŸáẠ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) á áá±á¬ááºáááºááœá² (TARGET_SUFFIX) ááᯠáááºááŸááºááá¯ááºááŸá¯á¡á¬áž compile command ááœáẠááá·áºááœááºážáá¬ážáá«áááºá
- á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠááá±á¬áá»ááºáá»á¬ážá áœá¬ááœáẠáá»áŸáá±áá¬ážáá±á¬ áááºááŸáºáá áºáá¯ááᯠá¡áá¯á¶ážááŒá¯ááœáá·áºáá±ážááá·áº áááºáá±á·áá»áºááŸáº (subprojects/packagecache) ááá¯á· áááºážááŒá±á¬ááºážááᯠá¡á á¬ážááá¯ážááẠMESON_PACKAGE_CACHE_DIR ááᯠáááºááá·áºáá¬ážáááºá
- persistent cache ááá¯ááŸááºážáááºážááẠ"meson setup --clearcache" command ááá¯ááá·áºááœááºážáá²á·áááºá
- âááá¯á¡ááºáááºâ áá±á¬á·áá»ááºá á¬áá¯á¶ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠâhas_*â á á¯á ááºážááŸá¯á á áºáá±ážááá·áºáááºážáááºážáá»á¬ážá¡á¬ážáá¯á¶ážááœáẠáá±á«ááºážááá·áºááá¯ááºáá«ááŒá®á á¥ááá¬á âassert(cc.has_function('some_function'))â á¡á á¬áž âcc.has_function('some_function')â ááᯠááá¯áááºáááºááŸááºááá¯ááºáá«ááŒá® ááá¯á¡ááºáááº: true)"
- ááá·áºáááºáá¬ážáá±á¬ rust_crate_type á¡á á¬áž á¡áá¯á¶ážááŒá¯ááá·áºááá·áºáá±á¬á·áá»ááºá á¬áá¯á¶ážá¡áá Ạrust_abi ááᯠshared_library(), static_library(), library(), ááŸáá·áº shared_module() áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááá¯á· ááá·áºááœááºážáá¬ážáá«áááºá
source: opennet.ru