lansarea unui generator de scenarii de construcție open-source, multiplatformă , care servește ca alternativă la Autotools și este utilizat în proiecte precum KDE, LLVM/Clang, MySQL, MariaDB, ReactOS și Blender. Codul CMake este scris în C++ și este distribuit sub licența BSD.
CMake se remarcă prin furnizarea unui limbaj simplu de scripturi, prin extensibilitate prin module, un număr minim de dependențe (fără legături la M4, Perl sau Python), suport pentru caching, instrumente pentru cross-compiling, generarea fișierelor de construcție pentru o gamă largă de sisteme de construcție și compilatoare, utilități ctest și cpack pentru definirea scenariilor de testare și construcție a pachetelor, precum și utilitarul cmake-gui pentru configurarea interactivă a parametrilor de construcție.
Principalele :
- S-a adăugat suport pentru limbajele Objective C („OBJC”) și Objective
C++ („OBJCXX”), care pot fi activate prin comenzile project() și enable_language(), după care codul din fișierele „.m” și „.mm” va fi compilat ca și cod Objective C și Objective C++, în loc de C++, ca înainte; - S-a adăugat suport pentru compilatorul Clang pe platforma Solaris;
- Au fost adăugate noi parametri pentru linia de comandă: „cmake -E true|false” pentru a returna codurile 0 și 1; „cmake —trace-redirect=” pentru a redirecționa informațiile despre trace în fișier, în loc de
„stderr”; comanda „cmake —loglevel” a fost redenumită în „—log-level” pentru uniformizarea denumirilor altor comenzi; - A fost adăugată comanda „target_precompile_headers()” pentru a lista fișierele de antet utilizate în precompilare (reduce timpul de construcție);
- A fost adăugat proprietatea „UNITY_BUILD”, care activează modul de procesare în grup a fișierelor sursă în generatoare pentru a accelera construcția;
- Au fost adăugate comenzile „find_file()”, „find_library()”, „find_path()”,
„find_package()” și „find_program()” pentru a căuta fișiere, biblioteci, căi, pachete și executabile conform variabilelor care definesc căile de căutare pentru diferite categorii de fișiere.
Pentru gestionarea căilor de bază pentru căutare sunt utilizate variabilele „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” și „CMAKE_FIND_USE_PACKAGE_REGISTRY”; - Modul «file()» a fost extins cu modulul «file(GET_RUNTIME_DEPENDENCIES)», care permite extragerea recursivă a listei bibliotecilor utilizate la legarea dinamică a fișierului executabil sau bibliotecii. Modulul a înlocuit comanda GetPrerequisites(), care este acum considerată depășită;
- În comanda «ctest(1)» a fost implementată capacitatea de a serialize testele, bazându-se pe resursele necesare pentru fiecare test;
- Variabila «CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY» a fost declarată ca depășită, fiind înlocuită cu «CMAKE_FIND_USE_PACKAGE_REGISTRY»;
- Suportul pentru platforma AIX a fost îmbunătățit. Când se folosește proprietatea «ENABLE_EXPORTS», pe lângă fișierul executabil, acum se generează un fișier de import pentru linker, salvat cu extensia «.imp». În pluginurile create prin apelarea «add_library()» cu opțiunea «MODULE», acest fișier poate fi utilizat la legarea cu comanda «target_link_libraries()». Legarea la runtime în AIX este dezactivată în mod implicit, deoarece CMake oferă acum toate informațiile necesare despre simboluri pentru legare în timpul încărcării. Pentru a utiliza legarea la runtime a bibliotecilor dinamice sau modulelor încărcabile, trebuie să specificați explicit opțiunile «-Wl,-G» în lista de flaguri pentru linker, definite prin variabilele «CMAKE_SHARED_LINKER_FLAGS» și «CMAKE_MODULE_LINKER_FLAGS».
Sursa: opennet.ro
