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_RO 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";
- Покращено підтримку платформи 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