a cross-platform open script generator for builds , serving as an alternative to Autotools and used in projects like KDE, LLVM/Clang, MySQL, MariaDB, ReactOS, and Blender. The CMake code is written in C++ and is distributed under the BSD license.
A CMake kiemelkedő a könnyen használható scripting nyelvével, a funkcionalitás kiterjesztésének lehetőségével modulokon keresztül, minimális függőségekkel (nincsenek M4, Perl vagy Python függőségek), cache támogatással, cross-compiling eszközökkel, széles spektrumú build rendszerek és fordítók számára készült build fájlok generálásával, valamint a ctest és cpack eszközök biztosításával, amelyek a tesztelő és csomagoló script meghatározására szolgálnak, továbbá a cmake-gui eszközzel, amely interaktív módon teszi lehetővé a build paraméterek beállítását.
Fő :
- Hozzáadva az Objective C („OBJC”) és az Objective C++ („OBJCXX”) nyelvek támogatása, amelyek aktiválhatók a project() és enable_language() parancsokkal, ezután a „.m” és „.mm” fájlokban lévő kód Objective C és Objective C++ kódként lesz fordítva, nem pedig C++ kódként, ahogyan korábban;
Hozzáadva a Clang fordító támogatása a Solaris platformon; - Új parancssori opciók lettek hozzáadva: „cmake -E true|false” a 0 és 1 visszatérési kódok kiadásához; „cmake —trace-redirect=” a nyomkövetési információk fájlba való átirányításához, ahelyett, hogy a
- „stderr”-ben jelenjen meg; a „cmake —loglevel” parancs elnevezése megváltozott „—log-level”-re, hogy összhangban legyen a többi parancs elnevezésével;
Hozzáadva a „target_precompile_headers()” parancs a prekompilálásra használt fejlécek listájának felsorolásához (csökkenti az építési időt); - Hozzáadva a „UNITY_BUILD” tulajdonság, amely aktiválja az alapforrásfájlok batch feldolgozási módját a generátorokban az építési idő növelése érdekében;
- Hozzáadva a „find_file()”, „find_library()”, „find_path()”,
- „find_package()” és „find_program()” parancsok a fájlok, könyvtárak, utak, csomagok és végrehajtható fájlok keresésére a különböző fájltípusok keresési útvonalainak meghatározása érdekében.
A keresési alaputak kezelésére a „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” és „CMAKE_FIND_USE_PACKAGE_REGISTRY” változókat használják;
A „file()” parancshoz hozzáadva a „file(GET_RUNTIME_DEPENDENCIES)” mód, amely lehetővé teszi, hogy rekurzívan kinyerjük a végrehajtható fájlhoz vagy könyvtárhoz dinamikusan kapcsolódó könyvtárak listáját. Ez a mód felváltja a GetPrerequisites() parancsot, amely most elavult; - A „ctest(1)” parancsban a tesztek erőforrásigényei alapján történő sorosításának lehetősége valósult meg;
- Az „CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY” változó elavultnak nyilvánítva, helyette a „CMAKE_FIND_USE_PACKAGE_REGISTRY” használatát javasolják;
- Hozzáadva a Clang fordító támogatása a Solaris platformon;
- Javították az AIX platform támogatását. Az «ENABLE_EXPORTS» tulajdonság használatakor a futtatható fájl mellett immár egy importáló fájl is létrejön a linker számára, amely «.imp» kiterjesztéssel kerül mentésre. Az «add_library()» hívásával, «MODULE» opcióval létrehozott pluginek esetében ez a fájl felhasználható a «target_link_libraries()» parancs használatával történő linkeléskor. Az AIX runtime linkelés alapértelmezés szerint le van tiltva, mivel a CMake mostantól minden szükséges információt biztosít a szimbólumok betöltéshez történő összekapcsolásához. A dinamikus könyvtárak vagy betölthető modulok runtime linkelésének alkalmazásához egyértelműen meg kell adni a «-Wl,-G» opciót a linkerindító flaglistákban, amelyeket a «CMAKE_SHARED_LINKER_FLAGS» és «CMAKE_MODULE_LINKER_FLAGS» változók határoznak meg.
Forrás: opennet.ru
