Se ha lanzado la versión multiplataforma del generador de scripts de construcción abierto CMake 4.0.0, 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 de CMake está escrito en C++ y se distribuye bajo la licencia BSD.
CMake es notable por proporcionar un lenguaje de scripts sencillo, métodos para extender la funcionalidad a través de módulos, soporte para la caché, herramientas para la compilación cruzada, soporte para la generación de archivos de construcción para una amplia variedad de sistemas de construcción y compiladores, utilidades ctest y cpack para definir scripts de prueba y construcción de paquetes, y la herramienta cmake-gui para configurar interactivamente los parámetros de construcción.
Principales cambios:
- Se ha eliminado la compatibilidad con versiones de CMake anteriores a la 3.5. Al vincularse a versiones no compatibles en las funciones cmake_minimum_required() y cmake_policy(), ahora se generará un error.
- Se ha agregado una variable de entorno 'CMAKE_POLICY_VERSION_MINIMUM' para sobrescribir la versión mínima de CMake necesaria para la construcción del proyecto. La variable añadida permite evitar cambios en las llamadas a cmake_minimum_required(VERSION) y cmake_policy(VERSION) en el propio proyecto, por ejemplo, para configurar políticas de versiones en proyectos que no permiten tal opción.
- Se ha añadido la operación 'NATIVE_PATH' a la expresión del generador '$' para convertir la ruta de archivo desde la representación de CMake (donde siempre se utiliza '/' para separar directorios) a la ruta del sistema (en sistemas Unix-like se utiliza '/', y en Windows '\').
- En la plataforma macOS, al utilizar generadores de scripts de construcción basados en Ninja y generadores de Makefile, si en el directorio '/usr/bin' hay un compilador, este se mantendrá tal cual, sin estar vinculado al compilador de Xcode. En la construcción para la plataforma macOS, se ha dejado de elegir el SDK por defecto y de pasar al compilador la opción '-isysroot' (el SDK ahora es elegido por el propio compilador, no por CMake).
- Se ha añadido la propiedad LINK_WARNING_AS_ERROR, por la cual las advertencias del enlazador se tratarán como errores. Para desactivar este comportamiento, se ha añadido la opción de línea de comandos '--link-no-warning-as-error'.
- Se ha añadido la opción '--project-file' a la utilidad cmake para especificar un nombre alternativo para el archivo CMakeLists.txt.
- Se ha añadido la posibilidad de crear archivos tar sin comprimir al generador CPack.
- En el equipo target_link_libraries() y las variables CMAKE_EXE_LINKER_FLAGS*, CMAKE_SHARED_LINKER_FLAGS*, CMAKE_MODULE_LINKER_FLAGS* se ha añadido soporte para el prefijo «LINKER:».
- Se han agregado nuevas variables:
- CMAKE_EXECUTE_PROCESS_COMMAND_ERROR_IS_FATAL,
- CMAKE__LINK_MODE,
- CMAKE__DEVICE_LINK_MODE,
- CMAKE_LINK_WARNING_AS_ERROR,
- CMAKE_MSVC_RUNTIME_CHECKS,
- CMAKE_DEBUGGER_WORKING_DIRECTORY,
- CMAKE_XCODE_SCHEME_LLDB_INIT_FILE,
- CMAKE_XCODE_SCHEME_TEST_CONFIGURATION.
- Se han agregado nuevas propiedades: DEBUGGER_WORKING_DIRECTORY y VS_SOLUTION_ITEMS (para adjuntar archivos a .sln para Visual Studio).
- Se ha asegurado la creación de compilaciones preparadas de CMake para SunOS para las arquitecturas sparc64 y x86_64.
Fuente: opennet.ru
