tuvo lugar lanzamiento de un generador de scripts de compilación abierto multiplataforma CMake 3.15, que actúa como una alternativa a Autotools y se utiliza en proyectos como KDE, LLVM/Clang, MySQL, MariaDB, ReactOS y Blender. El código CMake está escrito en C++ y distribuido bajo la licencia BSD.
CMake se destaca por proporcionar un lenguaje de secuencias de comandos simple, un medio para extender la funcionalidad a través de módulos, un número mínimo de dependencias (sin vinculación a M4, Perl o Python), soporte de almacenamiento en caché, la presencia de herramientas para compilación cruzada, soporte para generar compilaciones. archivos para una amplia gama de sistemas de compilación y compiladores, la presencia de utilidades ctest y cpack para definir scripts de prueba y crear paquetes, utilidad cmake-gui para configurar interactivamente los parámetros de compilación.
Se agregó soporte de idioma inicial al generador de scripts de compilación basado en Ninja. rápido, desarrollado por Apple;
Se agregó soporte para una variante del compilador Clang para Windows que se compila con MSVC ABI, pero usa opciones de línea de comando de estilo GNU;
Se agregaron variables CMAKE_MSVC_RUNTIME_LIBRARY y MSVC_RUNTIME_LIBRARY para seleccionar bibliotecas de tiempo de ejecución utilizadas por los compiladores basados en MSVC ABI (MS Visual Studio);
Para compiladores como MSVC, CMAKE__FLAGS de forma predeterminada deja de enumerar indicadores de control de advertencia como "/W3";
Se agregó una expresión generadora "COMPILE_LANG_AND_ID:" para definir las opciones del compilador para los archivos de destino, usando las variables CMAKE__COMPILER_ID y LANGUAGE para cada archivo de código;
En las expresiones del generador C_COMPILER_ID, CXX_COMPILER_ID,
CUDA_COMPILER_ID, Fortran_COMPILER_ID, COMPILE_LANGUAGE,
COMPILE_LANG_AND_ID y PLATFORM_ID agregaron soporte para hacer coincidir un solo valor con una lista cuyos elementos están separados por una coma;
Se agregó la variable CMAKE_FIND_PACKAGE_PREFER_CONFIG para que llamar a find_package() busque primero el archivo de configuración del paquete, incluso si hay un buscador disponible;
Para las bibliotecas de interfaz, se ha agregado soporte para configurar las propiedades PUBLIC_HEADER y PRIVATE_HEADER, mediante las cuales se pueden configurar encabezados usando el comando install(TARGETS) pasando los argumentos PUBLIC_HEADER y PRIVATE_HEADER;
Se agregó la variable CMAKE_VS_JUST_MY_CODE_DEBUGGING y la propiedad de destino VS_JUST_MY_CODE_DEBUGGING para habilitar el modo "Solo mi código" en el depurador de Visual Studio al compilar con MSVC cl 19.05 y versiones más recientes;
Se ha rediseñado el módulo FindBoost, que ahora funciona de manera más integral en los modos Configuración y Módulo en presencia de otros módulos de búsqueda;
El comando message() ahora admite los tipos NOTICE, VERBOSE,
DEPURACIÓN y SEGUIMIENTO;
El comando "exportar(PACKAGE)" ahora no hace nada a menos que se habilite explícitamente mediante la variable CMAKE_EXPORT_PACKAGE_REGISTRY.