релийз на платформен отворен генератор на сценарии за билд , който служи като алтернатива на 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()» за търсене на файлове, библиотеки, пътища, пакети и изпълними файлове в съответствие с променливите, определящи пътищата за търсене на различни категории файлове.
За управление на основните пътища за търсене се използват променливи «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)», позволяващ рекурсивно извличане на списъка с библиотеки, участващи при динамично свързване на изпълним файл или библиотека. Режимът замени командата 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. При използване на свойството "ENABLE_EXPORTS", освен изпълнимия файл, сега се създава и файл за импортиране за свързвача, който се запазва с разширение ".imp". В плъгините, създадени с помощта на извикването "add_library()" с опцията "MODULE", този файл може да се използва при свързването чрез командата "target_link_libraries()". Runtime-свързването в AIX по подразбиране е деактивирано, тъй като CMake вече предоставя цялата необходима информация за символите за свързване по време на зареждане. За да се приложи runtime-свързване на динамични библиотеки или заредени модули, е необходимо явно да се посочат опции "-Wl,-G" в списъците с флаговете за свързвача, които се определят чрез променливите "CMAKE_SHARED_LINKER_FLAGS" и "CMAKE_MODULE_LINKER_FLAGS".
Източник: opennet.ru
