Se dio a conocer el lanzamiento de la nueva versión de CMake 3.28 la cual incluye mejoras de soporte, asi como también la capacidad de compilar el lenguaje HIP para las GPU NVIDIA, correcciones de errores 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.
Novedades de CMake 3.28
En esta nueva version que se presenta de CMake 3.28 se destaca la compatibilidad con módulos definidos en la especificación C++20 a los generadores de scripts de compilación para Visual Studio y Ninja en combinación con el conjunto de herramientas MSVC 14.34 (proporcionado con VS 17.4) y posteriores, LLVM/Clang 16.0 y posteriores, y GCC 14 (después de 2023) y más nuevos.
Otro de los aspectos destacados de esta nueva versión de CMake 3.28 es el soporte para compilar código de GPU NVIDIA en el lenguaje HIP utilizando el compilador NVCC, pues se agregó la variable CMAKE_HIP_PLATFORM para seleccionar la plataforma GPU para HIP («amd» o «nvidia»).
Además de ello, en plataformas Apple ahora se admiten los directorios».xcframework» y con ello ahora el comando find_library busca carpetas .xcframework, target_link_libraries ahora admite enlaces a una carpeta .xcframework.
En CMake 3.28 los comandos find_library(), find_path() y find_file() en Windows desactivan la búsqueda en directorios de instalación obtenidos de la variable de entorno PATH (para unificar el comportamiento en Windows con otras plataformas). Este comportamiento se agregó en CMake 3.3 para admitir entornos de desarrollo MSYS y MinGW() en Windows, pero puede buscar prefijos no deseados que se encuentran en el PATH por razones no relacionadas. CMake 3.6 revirtió el comportamiento para plataformas que no son Windows y ahora también se ha revertido en las plataformas Windows.
Por la parte de las mejoras en módulos, se destaca que ExternalProject ahora incluye la opción BUILD_JOB_SERVER_AWARE para el comando ExternalProject_Add(). Esta opción permite la integración del servidor de trabajos GNU Make cuando se utiliza de forma explícita BUILD_COMMAND con ciertos generadores Makefile.
De los demás cambios que se destacan de esta nueva versión:
- Se eliminó el comando «exec_program()», que quedó obsoleto en la versión 3.0. Para ejecutar procesos, utilice el comando «execute_process()».
- Los archivos generados usando el modo » FILE_SET » ahora se tratan como privados de forma predeterminada, lo que permite un gráfico de compilación más eficiente en los generadores Ninja.
- Ya se puede configurar la variable de entorno CMAKE_PREFIX_PATH con una lista de prefijos separados por punto y coma que se van a buscar.
- Cuando se utilizan herramientas MinGW en un entorno MSYSTEM de Windows, los prefijos $MSYSTEM_PREFIX/localy $MSYSTEM_PREFIX ahora se agregan a CMAKE_SYSTEM_PREFIX_PATH.
- Los archivos binarios precompilados de Linux x86_64 proporcionados en cmake.org ahora requieren GLIBC 2.17 o superior.
- Los compiladores basados en Cray Clang ahora son compatibles con compiler id CrayClang.
- El compilador OrangeC ahora es compatible con compiler id OrangeC.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.
Obtener la nueva versión de CMake
Para los interesados en poder instalar la nueva versión de Cmake en su sistema, deben saber que pueden obtener la nueva versión desde la sección de descargas de la página web del proyecto. El enlace es este.
Para el caso de Linux, en la mayoría de las distribuciones basta con ejecutar los comandos de actualización para obtener la nueva versión. Aunque si prefieres compilar desde código fuente, basta con descargar el paquete correspondiente a tu arquitectura, desempaquetar y ejecutar los comandos de compilación (ya estando dentro de la carpeta):
./bootstrap
make -j$(nproc)
sudo make install