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