խաչplatformային բաց ծրագրերի сборки գեներատոր , որը ծառայում է որպես փոխարինող 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()» հրամանները՝ ֆայլեր, գրադարաններ, ուղիներ, փաթեթներ և executable ֆայլեր փնտրելու համար՝ ըստ տարբերակի, որը սահմանում է տարբեր կատեգորիաների ֆայլերի փնտրելու ուղիները:
Բուն մատակարարված ուղիներն կառավարվում են «CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH», «CMAKE_FIND_USE_CMAKE_PATH», «CMAKE_FIND_USE_CMAKE_SYSTEM_PATH», «CMAKE_FIND_USE_PACKAGE_ROOT_PATH», «CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH» և «CMAKE_FIND_USE_PACKAGE_REGISTRY» փոփոխականների միջոցով;
«file()» հրամանին ավելացված է «file(GET_RUNTIME_DEPENDENCIES)» ռեժիմ, որը թույլ է տալիս ռեկուրսիվորեն տրամադրել այն գրադարանների ցանկը, որոնք ծնունդ են տալիս executable ֆայլին կամ գրադարանը динамикորեն կապվելու դեպքում: Ռեժիմը փոխարինեց GetPrerequisites() հրամանին, որը այժմ հայտարարված է որպես հին; - «ctest(1)» հրամանում իրագործվել է թեստերի սերիալացում՝ հիմնվելով՝ յուրաքանչյուր թեստի պահանջված ռեսուրսների վրա;
- «CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY» փոփոխականը հայտարարվել է որպես հին, որի փոխարեն պետք է օգտագործել «CMAKE_FIND_USE_PACKAGE_REGISTRY»;
- «CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY» փոփոխականը հայտարարվել է որպես հին, որի փոխարեն պետք է օգտագործել «CMAKE_FIND_USE_PACKAGE_REGISTRY»;
- AIX plataformanın dəstəyi artırılmışdır. "ENABLE_EXPORTS" xüsusiyyətini istifadə edərkən, icraedici dosyayla yanaşı, indi " .imp" uzantısı ilə saxlanan link kütləvi fayl yaradılır. "add_library()" çağırışı ilə yaradılan plaginlərdə, "MODULE" opsiyası ilə bu fayl "target_link_libraries()" əmri ilə kütləvi birləşdirmək üçün istifadə edilə bilər. AIX-də runtime birləşdirmə standart olaraq deaktivdir, çünki CMake, yükləmə zamanı bağlanma üçün bütün lazımi simvolları təqdim edir. Dinamik kitabxanaların və ya yüklənən modulların runtime birləşməsi üçün "-Wl,-G" opsiyalarını "CMAKE_SHARED_LINKER_FLAGS" və "CMAKE_MODULE_LINKER_FLAGS" vasitəsilə müəyyən edilən birləşdirənin işarə siyahısına əlavə etmək lazımdır.
Ընտանիք: opennet.ru
