ارسال شده توسط انتشار یک تولید کننده اسکریپت ساخت باز کراس پلتفرم 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" که با ژنراتور قدیمی در توانایی پردازش چندین پیکربندی مونتاژ به طور همزمان متفاوت است.
در مولد اسکریپت اسمبلی برای ویژوال استودیو ظاهر شد توانایی تعریف فایلهای منبع مرتبط با هر پیکربندی (برای هر منبع پیکربندی).
قابلیت تنظیم متا پارامترهای CUDA ("cuda_std_03"، "cuda_std_14"، و غیره) به ابزارهای تنظیم پارامترهای کامپایلر (ویژگی های کامپایلر) اضافه شده است.
متغیرهای "CMAKE_CUDA_RUNTIME_LIBRARY" و "CUDA_RUNTIME_LIBRARY" را برای انتخاب نوع کتابخانه های زمان اجرا هنگام استفاده از CUDA اضافه کرد.
ماژول "FindCUDAToolkit" را برای تعیین جعبه ابزار CUDA موجود در سیستم بدون فعال کردن زبان CUDA اضافه کرد.
دستور "--debug-find" را به cmake اضافه کرد تا هنگام انجام عملیات جستجو، عیب یابی قابل خواندن اضافی را ارائه دهد. برای اهداف مشابه، متغیر CMAKE_FIND_DEBUG_MODE اضافه شده است.
پشتیبانی برای جستجوی ابزارهای CURL با استفاده از فایل های پیکربندی تولید شده توسط cmake "CURLConfig.cmake" به ماژول "FindCURL" اضافه شد. برای غیرفعال کردن این رفتار، متغیر CURL_NO_CURL_CMAKE ارائه شده است.
ماژول FindPython توانایی جستجوی اجزای پایتون را در محیط های مجازی که با استفاده از "conda" مدیریت می شوند، اضافه کرده است.
ابزار ctest گزینههای «--no-tests=[خطا|نادیدهگرفتن]» را برای تعریف رفتار در حالت بدون آزمایش و «--repeat» را برای تنظیم شرایط برای اجرای مجدد تستها اضافه کرده است (تا زمانی که قبولی، پس از تایم اوت).
ویژگیهای هدف اسمبلی INTERFACE_LINK_OPTIONS، INTERFACE_LINK_DIRECTORIES و INTERFACE_LINK_DEPENDS اکنون در میان وابستگیهای داخلی کتابخانههای مونتاژ شده استاتیک منتقل میشوند.
هنگام استفاده از جعبه ابزار MinGW، جستجوی فایلهای DLL با دستور find_library به طور پیشفرض غیرفعال است (در عوض، تلاش پیشفرض وارد کردن کتابخانههای «.dll.a» است).
منطق انتخاب ابزار نینجا در مولد نینجا اکنون به نام فایل اجرایی بستگی ندارد - اولین ابزار ساخت نینجا، نینجا یا سامو که در مسیرهای تعریف شده از طریق متغیر محیطی PATH یافت می شود استفاده می شود.
یک دستور "-E rm" به cmake اضافه شد که می تواند برای حذف فایل ها و دایرکتوری ها به جای دستورات جداگانه "-E remove" و "-E remove_directory" استفاده شود.