CMake 3.17.0 llega con un nuevo generador de scripts Ninja, mejoras y más

Se acaba de presentar el lanzamiento de la nueva versión del generador de scripts de código abierto multiplataforma CMake 3.17, en la cual los desarrolladores han trabajado para añadir un nuevo generador de scripts llamado “Ninja Multi-Config”, mejoras para el generador scripts de Visual Studio, optimizaciones en general y más.

Para quienes desconozcan de CMake, deben saber que es una herramienta multiplataforma de generación o automatización de código que actúa como una alternativa a Autotools y se utiliza en proyectos como KDE, LLVM/Clang, MySQL, MariaDB, ReactOS y Blender.

CMake es notable por proporcionar un lenguaje de script simple, medios para expandir la funcionalidad a través de módulos, un número mínimo de dependencias (sin enlace a M4, Perl o Python), soporte para el almacenamiento en caché, la presencia de herramientas para compilación cruzada, soporte para generar archivos de compilación para una amplia gama de sistemas de compilación y compiladores, la presencia de Utilidades ctest y cpack para definir scripts de prueba y compilación, utilidad cmake-gui para configurar interactivamente los parámetros de compilación.

Esta utilidad se utiliza para controlar el proceso de compilación del software usando ficheros de configuración sencillos e independientes de la plataforma. Genera makefiles nativos y espacios de trabajo que pueden usarse en el entorno de desarrollo deseado.

Es comparable al GNU build system de Unix en que el proceso es controlado por ficheros de configuración, en el caso de CMake llamados CMakeLists.txt.

Novedades de CMake 3.17.0

Tal y como se menciona al principio, una de las principales novedades que se destacan de esta nueva versión de CMake 3.17.0 es la adición de un nuevo generador de scripts de compilación basado en herramientas Ninja, el cual tiene el nombre de «Ninja Multi-Config«, que difiere del generador anterior debido a que este nuevo generador aporta la capacidad de procesar varias configuraciones de compilación a la vez.

Por su parte, en el generador de scripts de compilación para Visual Studio, ahora se pueden definir archivos fuente adjuntos a cada configuración.

La capacidad de establecer metaparámetros para CUDA («cuda_std_03», «cuda_std_14», etc.) se ha agregado a las herramientas para configurar las funciones del compilador (Funciones de compilación).

Además de que, en el anuncio se menciona que se agregaron las variables «CMAKE_CUDA_RUNTIME_LIBRARY» y «CUDA_RUNTIME_LIBRARY» para seleccionar el tipo de bibliotecas de runtime cuando se usa CUDA y tambien el módulo «FindCUDAToolkit» para determinar las herramientas CUDA disponibles en el sistema sin incluir el lenguaje CUDA.

En CMake 3.17.0 el comando «–debug-find» se ha agregado para mostrar diagnósticos legibles adicionales al realizar operaciones de búsqueda. Para fines similares, se ha agregado la variable CMAKE_FIND_DEBUG_MODE.

Se agregó soporte para encontrar herramientas CURL en el módulo «FindCURL» utilizando los archivos de configuración «CURLConfig.cmake» generados por cmake. Para deshabilitar este comportamiento, se proporciona la variable CURL_NO_CURL_CMAKE.

El módulo FindPython agrega la capacidad de buscar componentes de Python en entornos virtuales controlados por «conda«.

Se agregó la opción «–no-tests=[error | ignore]» a la utilidad ctest para determinar el comportamiento en ausencia de pruebas y «–repeat» para especificar las condiciones para reiniciar las pruebas (hasta que pase, después del tiempo de espera).

De los demás cambios que se mencionan en el anuncio:

  • Las propiedades del objetivo de compilación INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES e INTERFACE_LINK_DEPENDS se transfirieron entre las dependencias internas de las bibliotecas ensambladas estáticamente.
  • Cuando se utiliza el kit de herramientas MinGW, la búsqueda de archivos DLL mediante el comando find_library está deshabilitada de forma predeterminada (en su lugar, de forma predeterminada, se intenta importar las bibliotecas «.dll.a»).
  • La lógica de elegir la utilidad ninja en el generador Ninja ahora no depende del nombre del archivo ejecutable: se usa la primera utilidad ninja-build, ninja o samu encontrada, que se encuentra en las rutas definidas a través de la variable de entorno PATH.
  • El comando «-E rm» se ha agregado a la utilidad cmake, que se puede usar para eliminar archivos y directorios en lugar de los comandos separados «-E remove» y «-E remove_directory«.

Finalmente si quieres conocer más al respecto, puedes consultar el anuncio de esta nueva versión en el siguiente enlace.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.