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

представлений реліз кросплатформного відкритого генератора сценаріїв складання CMake 3.17, що виступає як альтернатива Autotools і використовується в таких проектах, як KDE, LLVM/Clang, MySQL, MariaDB, ReactOS і Blender. Код CMake написаний мовою C++ та поширюється під ліцензією BSD.

CMake примітний наданням простої мови сценаріїв, засобами розширення функціональності через модулі, мінімальним числом залежностей (немає прив'язки до M4, Perl або Python), підтримкою кешування, наявністю інструментів для крос-компіляції, підтримкою генерації файлів складання для широкого спектру систем складання утиліт ctest і cpack для визначення сценаріїв тестування та складання пакетів, утилітою cmake-gui для інтерактивного налаштування параметрів складання.

Основні поліпшення:

  • Доданий новий генератор складальних сценаріїв на базі інструментарію Ninja - "Ninja Multi-Config", який відрізняється від старого генератора можливістю обробки відразу кількох складальних конфігурацій.
  • У генераторі складальних сценаріїв для Visual Studio з'явилася можливість визначення файлів з вихідними текстами, прив'язаних кожної конфігурації (per-config sources).
  • У засоби для налаштування параметрів компілятора (Compile Features) додано можливість завдання мета-параметрів для CUDA (cuda_std_03, cuda_std_14 тощо).
  • Додано змінні CMAKE_CUDA_RUNTIME_LIBRARY та CUDA_RUNTIME_LIBRARY для вибору типу runtime-бібліотек при використанні CUDA.
  • Доданий модуль FindCUDAToolkit для визначення доступного в системі інструментарію CUDA без включення мови CUDA.
  • В утиліту cmake додана команда «debug-find» для виведення додаткової діагностики, що читається при виконанні операцій пошуку. Для аналогічних цілей додано змінну CMAKE_FIND_DEBUG_MODE.
  • У модуль «FindCURL» додано підтримку пошуку інструментарію CURL за допомогою генерованих cmake файлів конфігурації «CURLConfig.cmake». Для вимкнення зазначеної поведінки передбачено змінну CURL_NO_CURL_CMAKE.
  • У модуль FindPython додано можливість пошуку компонентів Python у віртуальних оточеннях, керованих за допомогою "conda".
  • В утиліту ctest додані опції «—no-tests=[error|ignore]» для визначення поведінки у разі відсутності тестів та «—repeat» для завдання умов повторного запуску тестів (until-pass, after-timeout).
  • Забезпечено перенесення властивостей складальної мети INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES та INTERFACE_LINK_DEPENDS в числі внутрішніх залежностей бібліотек, що статично збираються.
  • При використанні інструментарію MinGW за замовчуванням відключено пошук файлів DLL командою find_library (замість цього за замовчуванням здійснюється спроба імпортування бібліотек «.dll.a»).
  • Логіка вибору утиліти ninja в генераторі Ninja тепер не залежить від назви виконуваного файлу - використовується перша утиліта, що попалася, ninja-build, ninja або samu, знайдена в шляхах, визначених через змінну оточення PATH.
  • В утиліту cmake додана команда "-E rm", яку можна використовувати для видалення файлів і каталогів замість роздільних команд "-E remove" та "-E remove_directory".

Джерело: opennet.ru

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