የሜሶን ግንባታ ስርዓት መልቀቂያ 1.3

እንደ X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME እና GTK የመሳሰሉ ፕሮጀክቶችን ለመገንባት የሚያገለግል የሜሶን 1.3.0 የግንባታ ስርዓት መለቀቅ ታትሟል። የሜሶን ኮድ በፓይዘን የተፃፈ ሲሆን በApache 2.0 ፍቃድ ስር ነው።

የሜሶን ቁልፍ የልማት ግብ ከፍተኛ ፍጥነት ያለው የመገጣጠም ሂደት ከምቾት እና ከአጠቃቀም ቀላልነት ጋር ተዳምሮ ማቅረብ ነው። ከመሥራት ይልቅ ግንባታው የ Ninja Toolkitን በነባሪነት ይጠቀማል፣ ነገር ግን እንደ xcode እና VisualStudio ያሉ ሌሎች ደጋፊዎችን መጠቀም ይቻላል። ስርዓቱ አብሮ የተሰራ ባለ ብዙ ፕላትፎርም ጥገኝነት ተቆጣጣሪ አለው ይህም ለስርጭት ፓኬጆችን ለመስራት ሜሶንን ለመጠቀም ያስችላል። የመሰብሰቢያ ደንቦች የሚዘጋጁት በቀላል ጎራ-ተኮር ቋንቋ ነው፣ እነሱ በደንብ ሊነበቡ የሚችሉ እና ለተጠቃሚው ሊረዱት የሚችሉ ናቸው (በደራሲዎቹ ሀሳብ መሰረት ገንቢው ህጎችን በመፃፍ ቢያንስ ጊዜ ማሳለፍ አለበት)።

በሊኑክስ፣ ኢሉሞስ/ሶላሪስ፣ ፍሪቢኤስዲ፣ ኔትቢኤስዲ፣ ድራጎንፍሊ ቢኤስዲ፣ ሃይኩ፣ ማክሮስ እና ዊንዶውስ ጂሲሲ፣ ክላንግ፣ ቪዥዋል ስቱዲዮ እና ሌሎች ኮምፕሌተሮችን በመጠቀም ማጠናቀር እና መገንባት ይደገፋል። C፣ C++፣ Fortran፣ Java እና Rustን ጨምሮ በተለያዩ የፕሮግራም አወጣጥ ቋንቋዎች ፕሮጀክቶችን መገንባት ይቻላል። ከመጨረሻው ግንባታ በኋላ ከተደረጉ ለውጦች ጋር በቀጥታ የሚዛመዱ አካላት ብቻ የሚገነቡበት የመጨመሪያ ግንባታ ሁነታ ይደገፋል። ሜሶን ሊደገሙ የሚችሉ ግንባታዎችን ለማመንጨት ሊያገለግል ይችላል፣ግንባቱን በተለያዩ አካባቢዎች ማካሄድ ሙሉ ለሙሉ ተመሳሳይ ፈጻሚዎች ያስከትላል።

የሜሶን 1.3 ዋና ፈጠራዎች፡-

  • የማጠናቀቂያ ማስጠንቀቂያዎችን እንደ ስህተት የሚቆጥረውን ወደ ኮምፕሌር ቼክ ስልቶች compiler.compiles() እና compiler.run() ላይ “werror: true” የሚለውን አማራጭ ታክሏል (ኮዱ ያለማስጠንቀቂያ መገንባቱን ለማረጋገጥ ይጠቅማል) ).
  • የምልክት ፍቺን በቅድመ ፕሮሰሰር ለመፈተሽ has_define ዘዴ ታክሏል።
  • የማክሮ_ስም መለኪያው ወደ configure_file() ተግባር ተጨምሯል፡ ለድርብ ግንኙነቶች ማክሮ ጥበቃን በ"#ጨምሮ"("ጠባቂዎችን ያካትቱ")፣ በC ቋንቋ በማክሮዎች ዘይቤ የተነደፈ (የተለዋዋጭ ፋይሎችን ማዋቀር ቀላል ያደርገዋል)። ማክሮ ስሞች)።
  • አዲስ የውጤት ቅርጸት ወደ configure_file () - JSON ("የውጤት_ቅርጸት: json") ታክሏል.
  • የእሴቶችን ዝርዝሮች ወደ c_std እና cpp_std መለኪያዎች የመጠቀም ችሎታ ታክሏል (ለምሳሌ፣ “ነባሪ_አማራጮች፡ 'c_std=gnu11፣c11′')።
  • ፋይሎችን ለማስኬድ CustomTarget በሚጠቀሙ ሞጁሎች ውስጥ በኒንጃ መገልገያ የሚወጡ መልዕክቶችን የማበጀት ችሎታ ታክሏል።
  • የግንባታ_ዒላማው "ጃሮ" ተቋርጧል እና በምትኩ "ጃር()" ጥሪ ይመከራል።
  • ጄነሬተሩ ግብአት የሚያስኬድበትን የአካባቢ ተለዋዋጭ ለማዘጋጀት የ'env' መለኪያው ወደ ጄነሬተር.ሂደት() ዘዴ ተጨምሯል።
  • ከተፈፃሚዎች ጋር የተጎዳኙ የግንባታ ኢላማ ስሞችን ሲገልጹ እንደ "ተፈፃሚ('foo', 'main.c', name_suffix: 'bar')" ያሉ ቅጥያዎች በተመሳሳዩ ማውጫ ውስጥ ተጨማሪ ተፈፃሚዎችን እንዲያመነጩ ተፈቅዶላቸዋል።
  • ወደ የተጋራ_ሞዱል() የተላለፉ ተግባራትን ዝርዝር የሚገልጽ የዴፍ ፋይል ለመጠቀም የ"vs_module_defs" መለኪያ ወደ ተፈፃሚው() ተግባር ታክሏል።
  • ለተመለስ ንኡስ ፕሮጀክት ነባሪ አማራጮችን ለማዘጋጀት የ'default_options' መለኪያ ወደ find_program() ተግባር ታክሏል።
  • የ fs.relative_to() ዘዴ ታክሏል፣ እሱም አንጻራዊውን መንገድ ለመጀመሪያው ነጋሪ እሴት የሚመልስ፣ ከሁለተኛው አንፃር፣ የመጀመሪያው መንገድ ካለ። ለምሳሌ፣ "fs.relative_to('/prefix/lib'፣ '/prefix/bin') == '../lib')"።
  • የሚከተለው_symlinks መለኪያ ወደ install_data() ፣ install_headers() እና install_subdir() ተግባራት ላይ ተጨምሯል፤ ሲዘጋጅ ተምሳሌታዊ አገናኞች ይከተላሉ።
  • ሕብረቁምፊውን በዜሮ መሪ ዜሮዎች ለመጨመር የ"ሙላ" መለኪያ ወደ int.to_string() ዘዴ ተጨምሯል። ለምሳሌ፣ መልእክት (n.to_string(ሙላ፡ 3)) ለ n=4 መደወል የ"004" ሕብረቁምፊ ይፈጥራል።
  • የ clang-tidy መገልገያውን ከ"-fix" ባንዲራ ጋር ማሄድን የሚገልጽ አዲስ ኢላማ ታክሏል።
  • የመሰብሰቢያ ዒላማውን ቅጥያ (TARGET_SUFFIX) የመግለጽ ችሎታ ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) ወደ ማጠናቀር ትዕዛዝ ታክሏል።
  • ወደ ጥቅል መሸጎጫ የሚወስደውን መንገድ ለመሻር MESON_PACKAGE_CACHE_DIR ተጨምሯል (ንዑስ ፕሮጄክቶች/የጥቅል መሸጎጫ) ለምሳሌ በብዙ ፕሮጀክቶች ውስጥ የጋራ መሸጎጫ እንድትጠቀሙ ያስችልሃል።
  • ቀጣይነት ያለው መሸጎጫ ለማጽዳት የ"meson setup --clearcache" ትዕዛዝ ታክሏል።
  • ለ"የሚፈለገው" ቁልፍ ቃል ድጋፍ በሁሉም "has_*" የአቀናባሪ የፍተሻ ዘዴዎች ላይ ተጨምሯል፡ ለምሳሌ፡ ከ"አስሰርት(cc.has_function('አንዳንድ_ተግባር'))" ይልቅ አሁን "cc.has_function('some_function') መግለጽ ትችላለህ። ፣ ያስፈልጋል፡ እውነት)”
  • አዲስ ቁልፍ ቃል፣ rust_abi፣ ወደ የተጋራ_ላይብረሪ()፣ የማይንቀሳቀስ_ላይብራሪ()፣ ቤተ-መጽሐፍት() እና የተጋራ_ሞዱል() ተግባራት ታክሏል፣ ይህም ከተቋረጠው የዝገት_crate_አይነት ይልቅ ጥቅም ላይ መዋል አለበት።

ምንጭ: opennet.ru

አስተያየት ያክሉ