Реліз системи збирання CMake 3.16

представлений реліз кросплатформного відкритого генератора сценаріїв складання CMake 3.16, що виступає як альтернатива 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_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

Додати коментар або відгук