ristplatvormilise avatud ehitus сценарийide generaatori väljaanne , mis on Autotools'ile alternatiiv ja mida kasutatakse sellistes projektides nagu KDE, LLVM/Clang, MySQL, MariaDB, ReactOS ja Blender. CMake'i kood on kirjutatud C++ keeles ja levitatakse BSD litsentsi alusel.
CMake paistab silma oma lihtsa сценарийide keele poolest, funktsionaalsuse laiendamise vahendite, miinimum sõltuvuste (ilma M4, Perl või Python seotuse), cache'i toe, ristkompileerimise tööriistade olemasolu, ehitusfailide genereerimise toetuse laiale valikule ehitus süsteemidele ja kompilaatoritele, samuti olemasolu utiliite ctest ja cpack testimise сценарийide ning pakettide ehitamise määratlemiseks, utiliidi cmake-gui interaktiivseks ehitusparameetrite seadistamiseks.
Peamised :
- Toetust on lisatud Objective C («OBJC») ja Objective C++ («OBJCXX») keelte jaoks, mida saab aktiveerida projekt() ja enable_language() käskude kaudu. Pärast seda kompileeritakse «.m» ja «.mm» failide kood Objective C ja Objective C++ koodiks, mitte C++ koodiks, nagu see oli varem.
Solaris platvormil on lisatud Clangi kompilaatori tugi. - Uued käsurida parameetrid: «cmake -E true|false» tagab väljakutse koodid 0 ja 1; «cmake —trace-redirect=» võimaldab jälgimise teabe suunamist faili, mitte «stderr»-le; «cmake —loglevel» käsk on ümber nimetatud «—log-level»-ks, et kokkusobitada teiste käskude nimedega.
- Lisatud käsk «target_precompile_headers()», et loetleda eelkompileeritavate päiste failide nimekiri (lühendab kompileerimisaega).
Lisatud omadus «UNITY_BUILD», mis aktiveerib lähtekoodifailide grupitöö režiimi generaatorites, et kiirendada kompileerimist. - Lisatud käsud «find_file()», «find_library()», «find_path()», «find_package()» ja «find_program()» failide, raamatukogude, teede, pakettide ja täidetavate failide leidmiseks vastavalt erinevate failikategooriate otsinguteed määravatele muutujatele.
- Lisatud omadus «UNITY_BUILD», mis aktiveerib lähtekoodifailide töötlemise pakettrežiimi generaatorites, et kiirendada kogu koostamisprotsessi;
- Lisatud käsud «find_file()», «find_library()», «find_path()»,
«find_package()» ja «find_program()» failide, raamatukogude, tee, pakettide ja täitmisfailide otsimiseks vastavalt erinevate failikategooriate otsinguteede määramise muutujatele.
Otsingu põhiteede haldamiseks kasutatakse muutujaid «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» ja «CMAKE_FIND_USE_PACKAGE_REGISTRY»; - Käsku «file()» on lisatud režiim «file(GET_RUNTIME_DEPENDENCIES)», mis võimaldab rekursiivselt eraldada nimekirja raamatukogudest, mis on seotud täidesaatva faili või raamatukogu dünaamilise sidumisega. See režiim asendab käsu GetPrerequisites(), mis on nüüd määratud vananenuks;
- Käsk «ctest(1)» on saanud võimaluse testide serialiseerimiseks, tuginedes iga testi jaoks vajalikele ressurssidele;
- Muutuja «CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY» on kuulutatud vananenuks, selle asemel tuleks kasutada «CMAKE_FIND_USE_PACKAGE_REGISTRY»;
- Parandatud AIX-i platvormi tugi. Kasutades atribuuti "ENABLE_EXPORTS", luuakse nüüd lisaks täidetavale failile ka impordifail linkerile, mis salvestatakse laiendiga ".imp". Pluginate puhul, mis on loodud "add_library()" kutsega koos valikuga "MODULE", saab seda faili kasutada linkimise ajal käsuga "target_link_libraries()". AIX-i runtime-linkimine on vaikimisi keelatud, kuna CMake pakub nüüd kõiki vajalikke sümbolite teavet linkimise ajal laadimise käigus. Dünaamiliste raamatukogude või laaditavate moodulite runtime-linkimise rakendamiseks tuleb rõhutada valikuid "-Wl,-G" linkeri käivituslipuflagide loendis, mida määratletakse muutuja "CMAKE_SHARED_LINKER_FLAGS" ja "CMAKE_MODULE_LINKER_FLAGS" kaudu.
Allikas: opennet.ru
