Рэліз сістэмы зборкі CMake 3.17.0

Прадстаўлены рэліз кросплатформавага адкрытага генератара сцэнараў зборкі CMake 3.17, Які выступае ў якасці альтэрнатывы Autotools і выкарыстоўваецца ў такіх праектах, як KDE, LLVM/Clang, MySQL, MariaDB, ReactOS і Blender. Код CMake напісаны на мове C++ і распаўсюджваецца пад ліцэнзіяй BSD.

CMake адметны прадастаўленнем простай мовы сцэнарыяў, сродкамі пашырэння функцыянальнасці праз модулі, мінімальным лікам залежнасцяў (няма прывязкі да M4, Perl або Python), падтрымкай кэшавання, наяўнасцю прылад для крос-кампіляцыі, падтрымкай генерацыі файлаў зборкі для шырокага спектру сістэм зборкі утыліт ctest і cpack для азначэння сцэнараў тэставання і зборкі пакетаў, утылітай cmake-gui для інтэрактыўнай налады параметраў зборкі.

Асноўныя паляпшэння:

  • Дададзены новы генератар зборачных сцэнарыяў на базе інструментара Ninja – "Ninja Multi-Config", які адрозніваецца ад старога генератара магчымасцю апрацоўкі за раз адразу некалькіх зборачных канфігурацый.
  • У генератары зборачных сцэнарыяў для Visual Studio з'явілася магчымасць вызначэння файлаў з зыходнымі тэкстамі, прывязаных да кожнай канфігурацыі (per-config sources).
  • У сродкі для налады параметраў кампілятара (Compile Features) дададзеная магчымасць задання мета-параметраў для CUDA ("cuda_std_03", "cuda_std_14" і да т.п).
  • Дададзеныя зменныя "CMAKE_CUDA_RUNTIME_LIBRARY" і "CUDA_RUNTIME_LIBRARY" для выбару тыпу runtime-бібліятэк пры выкарыстанні CUDA.
  • Дададзены модуль "FindCUDAToolkit" для вызначэння даступнага ў сістэме інструментара CUDA без уключэння мовы CUDA.
  • Ва ўтыліту cmake дададзена каманда "-debug-find" для вываду дадатковай чытэльнай дыягностыкі пры выкананні аперацый пошуку. Для аналагічных мэт дададзена зменная CMAKE_FIND_DEBUG_MODE.
  • У модуль «FindCURL» дададзеная падтрымка пошуку інструментара CURL пры дапамозе генераваных cmake файлаў канфігурацыі «CURLConfig.cmake». Для адключэння названых паводзін прадугледжана пераменная CURL_NO_CURL_CMAKE.
  • У модуль FindPython дададзеная магчымасць пошуку кампанентаў Python у віртуальных асяродках, якія кіруюцца пры дапамозе «conda».
  • Ва ўтыліту ctest дададзены опцыі "-no-tests=[error|ignore]" для вызначэння паводзін у выпадку адсутнасці тэстаў і "-repeat" для задання ўмоў паўторнага запуску тэстаў (until-pass, after-timeout).
  • Забяспечаны перанос уласцівасцяў зборачнай мэты INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES і INTERFACE_LINK_DEPENDS у ліку ўнутраных залежнасцяў бібліятэкаў, якія статычна збіраюцца.
  • Пры выкарыстанні інструментара MinGW па змаўчанні адключаны пошук DLL-файлаў камандай find_library (замест гэтага па змаўчанні ажыццяўляецца спроба імпартавання бібліятэк ".dll.a").
  • Логіка выбару ўтыліты ninja у генератары Ninja зараз не залежыць ад назвы выкананага файла – выкарыстоўваецца першая якая трапіла ўтыліта ninja-build, ninja ці samu, знойдзеная ў шляхах, вызначаных праз зменную асяроддзі PATH.
  • Ва ўтыліту cmake дададзена каманда "-E rm", якую можна выкарыстоўваць для выдалення файлаў і каталогаў замест паасобных каманд "-E remove" і "-E remove_directory".

Крыніца: opennet.ru

Дадаць каментар