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

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

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

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

  • Дададзена падтрымка моў Objective C («OBJC») і Objective
    C++ ("OBJCXX"), якія могуць быць актываваны праз каманды project() і enable_language(), пасля чаго код у файлах ".m" ".mm" будзе кампілявацца як код на Objective C і Objective C++, а не як код на C++, як гэта было раней;

  • Дададзена падтрымка кампілятара Clang на платформе Solaris;
  • Дабаўлены новыя параметры каманднага радка: "cmake -E true|false" для вываду кодаў вяртання 0 і 1; "cmake —trace-redirect=" для перанакіравання інфармацыі аб трасіроўцы ў файл, замест
    "stderr"; каманда "cmake -loglevel" пераназваная ў "-log-level" для прывядзення ў адпаведнасць з найменнем астатніх каманд;

  • Дададзена каманда «target_precompile_headers()» для пералічэння спісу загалоўкавых файлаў, якія выкарыстоўваюцца пры предкомпиляции (скарачае час зборкі);
  • Дададзена ўласцівасць «UNITY_BUILD», якое актывуе пакетны рэжым апрацоўкі зыходных файлаў у генератарах для паскарэння зборкі;
  • Дададзеныя каманды "find_file()", "find_library()", "find_path()",
    "find_package()" і "find_program()" для пошуку файлаў, бібліятэк, шляхоў, пакетаў і выкананых файлаў у адпаведнасці са зменнымі, вызначальнымі шляхі пошуку розных катэгорый файлаў.
    Для кіравання базавымі шляхамі для пошуку выкарыстоўваюцца зменныя "CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH", "CMAKE_FIND_USE_CMAKE_PATH", "CMAKE_FIND_USE_CMAKE_SYSTEM_PATH", "CMAKE_FIND_USE_PACKAGE_ MENT_PATH» і «CMAKE_FIND_USE_PACKAGE_REGISTRY»;

  • У каманду "file()" дададзены рэжым "file(GET_RUNTIME_DEPENDENCIES)", які дазваляе рэкурсіўна атрымаць спіс бібліятэк, задзейнічаных пры дынамічным звязванні выкананага файла або бібліятэкі. Рэжым прыйшоў на змену камандзе GetPrerequisites(), якая зараз абвешчана састарэлай;
  • У камандзе "ctest(1)" рэалізавана магчымасць серыялізацыі тэстаў, адштурхваючыся ад рэсурсаў, неабходных для кожнага тэста;
  • Аб'яўлена састарэлая пераменная "CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY", замест якой варта выкарыстоўваць "CMAKE_FIND_USE_PACKAGE_REGISTRY";
  • Палепшана падтрымка платформы AIX. Пры выкарыстанні ўласцівасці «ENABLE_EXPORTS», апроч выкананага файла, зараз фармуецца файл імпарту для кампаноўніка, які захоўваецца з пашырэннем «.imp». У убудовах, якiя ствараюцца пры дапамозе выкліку «add_library()» з опцыяй «MODULE», дадзены файл можа ўжывацца пры кампаноўцы з выкарыстаннем каманды «target_link_libraries()». Runtime-кампаноўка ў AIX па змаўчанні адключаная, бо CMake зараз падае ўсю неабходную інфармацыю аб знаках для звязвання падчас загрузкі. Для ўжывання runtime-кампаноўкі дынамічных бібліятэк ці загружаных модуляў варта відавочна паказваць опцыі "-Wl,-G" у спісы сцягоў запуску кампаноўніка, вызначаных праз зменныя "CMAKE_SHARED_LINKER_FLAGS" і "CMAKE_MODULE_LINKER_FLAGS".

Крыніца: opennet.ru

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