lansarea unui generator de scripturi open build multiplatformă , care acționează ca o alternativă la Autotools și este folosit î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 este remarcabil pentru furnizarea unui limbaj de scripting simplu, un mijloc de extindere a funcționalității prin module, un număr minim de dependențe (fără legarea la M4, Perl sau Python), suport pentru cache, prezența instrumentelor pentru compilare încrucișată, suport pentru generarea de build fișiere pentru o gamă largă de sisteme de compilare și compilatoare, utilitarele de prezență ctest și cpack pentru definirea scripturilor de testare și a pachetelor de construire, utilitarul cmake-gui pentru setarea interactivă a parametrilor de construcție.
Principalul :
- S-a adăugat suport pentru Objective C (“OBJC”) și limbajele Objective
C++ ("OBJCXX"), care poate fi activat prin comenzile project() și enable_language(), după care codul din fișierele „.m” „.mm” se va compila ca Objective C și Objective C++, mai degrabă decât ca C++, așa cum era înainte; - S-a adăugat suport pentru compilatorul Clang pe platforma Solaris;
- S-au adăugat noi opțiuni de linie de comandă: „cmake -E true|false” pentru a imprima codurile returnate 0 și 1; „cmake --trace-redirect=" pentru a redirecționa informațiile de urmărire către un fișier
„stderr”; comanda „cmake --loglevel” a fost redenumită în „--log-level” pentru a o alinia cu numele celorlalte comenzi; - S-a adăugat comanda „target_precompile_headers()” pentru a lista lista fișierelor de antet utilizate în timpul precompilării (reduce timpul de construire);
- S-a adăugat proprietatea „UNITY_BUILD”, care activează modul batch pentru procesarea fișierelor sursă în generatoare pentru a accelera construirea;
- S-au adăugat comenzi „find_file()”, „find_library()”, „find_path()”,
„find_package()” și „find_program()” pentru a căuta fișiere, biblioteci, căi, pachete și executabile în funcție de variabile care definesc căile de căutare pentru diferite categorii de fișiere.
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_CMAKE_PATH” și „CMAKE_FIND_USE_SYSTEM_PATH”_THM_GPAKE__ sunt folosite pentru a controla căile de căutare de bază ISTRY"; - S-a adăugat modul „fișier(GET_RUNTIME_DEPENDENCIES)” la comanda „fișier()”, care vă permite să preluați în mod recursiv lista de biblioteci utilizate atunci când conectați dinamic un fișier executabil sau o bibliotecă. Modul a înlocuit comanda GetPrerequisites(), care acum a fost depreciată;
- Comanda „ctest(1)” implementează capacitatea de a serializa teste pe baza resurselor necesare pentru fiecare test;
- Variabila „CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY” a fost retrasă și ar trebui înlocuită cu „CMAKE_FIND_USE_PACKAGE_REGISTRY”;
- Suport îmbunătățit pentru platforma AIX. Când utilizați proprietatea „ENABLE_EXPORTS”, pe lângă fișierul executabil, acum este generat 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 folosit atunci când se leagă folosind comanda „target_link_libraries()”. Conectarea la timp de execuție pe AIX este dezactivată în mod implicit, deoarece CMake furnizează acum toate informațiile necesare despre simbol pentru conectarea la momentul încărcării. Pentru a utiliza legarea în timp de execuție a bibliotecilor dinamice sau a modulelor încărcate, trebuie să specificați în mod explicit opțiunile „-Wl, -G” în listele de steaguri de pornire a linkerului, definite prin variabilele „CMAKE_SHARED_LINKER_FLAGS” și „CMAKE_MODULE_LINKER_FLAGS”.
Sursa: opennet.ru
