CMake

CMake — Descargar gratis. Sistema de construcción de software

CMake es una herramienta diseñada para controlar el proceso de compilación de software utilizando archivos de configuración independientes de la plataforma. Genera archivos de construcción nativos como Makefiles o proyectos de IDE, facilitando la gestión de dependencias y la compilación multiplataforma.

★★★★★
5.0(1 valoraciones)

Descargar CMake (Enlaces oficiales)
Tamaño del archivo: 37.3 MB
La última versión de CMake es: 4.4.4
Sistema operativo: Windows, Linux, Mac OS
Idiomas: English
Precio: $0.00 USD
Producto de código abierto y gratuito.

  • Gestión de dependencias. CMake permite definir y gestionar dependencias entre bibliotecas y ejecutables. Analiza las relaciones entre componentes del proyecto y genera instrucciones de compilación en el orden correcto, asegurando que todas las dependencias estén resueltas antes de la construcción.
  • Configuración multiplataforma. CMake genera archivos de construcción específicos para diferentes sistemas operativos y entornos de desarrollo. Soporta Windows, Linux, macOS y otras plataformas, adaptándose a las herramientas de compilación disponibles en cada sistema.
  • Generación de proyectos IDE. La herramienta puede crear archivos de proyecto para entornos como Visual Studio, Xcode y Eclipse. Esto simplifica la integración con IDEs populares sin necesidad de configuraciones manuales.
  • Pruebas automatizadas. CMake incluye soporte para CTest, un sistema de pruebas que permite definir, ejecutar y gestionar pruebas unitarias y de integración directamente desde los scripts de construcción.
  • Instalación personalizada. Proporciona comandos para definir reglas de instalación de binarios, bibliotecas y archivos de cabecera. Esto permite empaquetar y distribuir software de manera estructurada.
  • Búsqueda de bibliotecas. CMake puede localizar bibliotecas y paquetes externos en el sistema. Utiliza scripts de búsqueda para detectar rutas, versiones y configuraciones necesarias para la compilación.
  • Variables y opciones configurables. Los desarrolladores pueden definir variables y opciones que modifican el comportamiento del proceso de construcción. Estas configuraciones se pueden ajustar mediante la interfaz de línea de comandos o interfaces gráficas.
  • Soporte para compiladores cruzados. CMake permite configurar entornos de compilación cruzada, donde el código se compila para una plataforma diferente a la del sistema host. Esto es esencial en el desarrollo embebido y para sistemas heterogéneos.
  • Integración con CPack. CPack es una herramienta incluida en CMake para generar paquetes de distribución en formatos como DEB, RPM o NSIS. Facilita la creación de instaladores para diferentes sistemas operativos.
  • Módulos y scripts reutilizables. CMake ofrece una biblioteca de módulos predefinidos para tareas comunes, como encontrar bibliotecas o configurar características del compilador. Los desarrolladores también pueden crear sus propios módulos personalizados.

CMake fue creado en el año 2000 por Kitware, una compañía especializada en software de código abierto para visualización científica y procesamiento de datos. El lenguaje de programación utilizado para su desarrollo es C++. Inicialmente diseñado como una alternativa a los sistemas de construcción tradicionales, CMake ha evolucionado para convertirse en una herramienta estándar en el desarrollo de software multiplataforma. Su adopción ha crecido significativamente en proyectos de código abierto y comerciales debido a su flexibilidad y capacidad de adaptación a entornos complejos.


Alternativas a CMake:

Para CMake hay 1 programa alternativo. Gratuitos: 1, de pago: 0.

UnrealHub — Descargar gratis. Gestor centralizado para motores Unreal Engine

UnrealHub

Una aplicación de escritorio que unifica la gestión de motores y proyectos de Unreal Engine en un solo lugar.
Precio: Gratis   Tamaño: 76.8 MB   Versión: 1.6.1   SO: Windows, Linux, MacOS

Changelog

Versión: 4.4.4
  1. Nuevo comando cmake_diagnostic() para gestionar el estado de los diagnósticos de CMake. Sustituye al sistema anterior basado en variables, añade varias categorías nuevas y hace mucho más barato incorporar otras en el futuro.
  2. Nueva categoría de diagnóstico CMD_INSTALL_ABSOLUTE_DESTINATION, que avisa cuando install() usa un DESTINATION absoluto. Se controla con la opción -Winstall-absolute-destination, con el campo installAbsoluteDestination de los presets o con cmake_diagnostic().
  3. Los presets admiten ahora la versión 12 del esquema. En ella, la macro ${fileDir} se expande al directorio del archivo de presets que la contiene, incluso si otro preset de un directorio distinto la hereda.
  4. cmake, ctest y cpack incorporan el argumento --presets-file para cargar los presets desde un archivo concreto en lugar de CMakePresets.json o CMakeUserPresets.json.
  5. Los presets de prueba incorporan el campo testPassthroughArguments para reenviar argumentos a los ejecutables de test.
  6. La API de archivos (codemodel versión 2) pasa a la versión 2.11. Los objetos sources e interfaceSources de target incluyen el campo fileSetIndexes, y sources añade backtraces, para soportar fuentes que pertenecen a varios file sets. Los campos antiguos fileSetIndex y backtrace se mantienen solo por compatibilidad. Además, el campo fileSetType de installers acepta el nuevo valor SOURCES.
  7. La instrumentación pasa a la versión de datos 1.1 y suma dos opciones: captureOutput, que recoge stdout y stderr de los comandos instrumentados, y compileTrace, que guarda los archivos de traza generados por el compilador (por ejemplo, con -ftime-trace de Clang).
  8. Los generadores Ninja pueden crear un objetivo test_prep/<nombre-del-test> por cada prueba definida con add_test(), que construye todas sus dependencias: el ejecutable que lanza la prueba, los objetivos citados en expresiones generadoras del comando y las indicadas con la nueva opción BUILD_DEPENDS. Se activa con la variable CMAKE_TEST_BUILD_DEPENDS. También se genera test_prep/all. Las pruebas con nombres que no son válidos como objetivos se excluyen, y las que comparten nombre en distintos directorios se fusionan en un único objetivo.
  9. El nivel de lenguaje CUDA 23 (equivalente a C++ 23) es compatible con NVCC 13.3 o superior.
  10. Los módulos con nombre de C++ 20 funcionan con clang-cl, salvo con los generadores de Visual Studio (el toolset ClangCl).
  11. Nuevo soporte para el compilador ibm-flang (id IBMFlang), la cadena de herramientas Pelles C (id PellesC) y el lenguaje ASM_POASM para el ensamblador de Pelles. El enlazador wlink de Open Watcom se identifica como OpenWatcom y el enlazador wild como WILD en CMAKE_<LANG>_COMPILER_LINKER_ID.
  12. Línea de comandos: cmake acepta --build <dir> --preset <pre> desde cualquier directorio de trabajo; la opción -D rellena un HELPSTRING por defecto para las variables conocidas; cmake --install permite instalar varios componentes y admite tanto -j<N> como -j <N>; los comandos cmake -E de copia (copy_if_different, copy_if_newer, copy_directory, copy_directory_if_different y copy_directory_if_newer) aceptan el argumento -t; y cmake -E tar incorpora --cmake-tar-encoding para fijar la codificación de las rutas del archivo.
  13. Comandos nuevos: cmake_diagnostic() y discover_tests(), este último registra pruebas descubiertas por ctest en tiempo de ejecución, ejecutando un comando de descubrimiento y generando nombres, argumentos y propiedades a partir de capturas de expresiones regulares.
  14. block() puede crear un ámbito DIAGNOSTICS e include() admite la opción NO_DIAGNOSTIC_SCOPE. if() suma el operador DIAGNOSTIC, que indica si CMake conoce una categoría de diagnóstico.
  15. cmake_parse_arguments() añade la firma PARSE_ARGN, que empieza a analizar tras el último argumento con nombre de la función y funciona como PARSE_ARGV.
  16. execute_process() admite ENVIRONMENT y ENVIRONMENT_MODIFICATION para lanzar procesos hijos con un entorno modificado.
  17. file(ARCHIVE_CREATE) y file(ARCHIVE_EXTRACT) incorporan la opción ENCODING para las rutas del archivo, cuyo valor por defecto es ahora UTF-8 (política CMP0213). file(READ_SYMLINK) suma la opción RESULT para capturar errores sin que el comando falle.
  18. list(FILTER) incorpora el modo PREDICATE, list(SORT) la palabra clave COMPARATOR y list(TRANSFORM) la acción APPLY y el selector PREDICATE. Todos invocan una función() definida por el usuario. Además, string(JSON ... PARTIAL_EQUAL) compara dos valores JSON mediante igualdad parcial.
  19. File sets: nuevo tipo SOURCES para declarar las fuentes de un objetivo, y nuevas propiedades CXX_SCAN_FOR_MODULES, INDEPENDENT_FILES, JOB_POOL_COMPILE, SKIP_LINTING, SKIP_PRECOMPILE_HEADERS y SKIP_UNITY_BUILD_INCLUSION. También se añaden SCOPE, TYPE, BASE_DIRS, SOURCES e INTERFACE_SOURCES, que exponen los datos declarados del file set.
  20. La variable CMAKE_INSTALL_DEFAULT_COMPONENT_NAME admite el valor especial <PROJECT_NAME>, con el que cada install() toma el nombre de componente del valor actual de PROJECT_NAME. La nueva variable de entorno CMAKE_DISABLE_PRECOMPILE_HEADERS desactiva por defecto las cabeceras precompiladas.
  21. Propiedades: VERIFY_INTERFACE_HEADER_SETS y VERIFY_PRIVATE_HEADER_SETS crean siempre el objetivo de verificación de cada target y los objetivos agregados (all_verify_interface_header_sets, all_verify_private_header_sets y all_verify_header_sets), aunque no existan header sets coincidentes, y ahora soportan OBJC y OBJCXX además de C y CXX. VS_SOLUTION_DEPLOY funciona ya en objetivos creados con add_custom_target().
  22. Módulos: write_basic_package_version_file() de CMakePackageConfigHelpers admite los modos SamePatchVersion, SameFullVersion y SemanticVersion (este último es más estricto con las versiones 0.y.z), y ExactVersion queda obsoleto. ExternalData añade ExternalData_LINK_MODE, para elegir el orden de materialización de archivos entre enlaces duros, simbólicos y copias, y ExternalData_STATE_ROOT, para guardar los registros de hash fuera de ExternalData_BINARY_ROOT.
  23. ExternalProject y FetchContent incorporan CMAKE_EP_GIT_CLONE_RETRY_COUNT y CMAKE_EP_GIT_CLONE_RETRY_DELAY para controlar los reintentos de git clone. FindCUDAToolkit crea el objetivo CUDA::sanitizer y un objetivo importado para cufilt desde CUDA 11.4. FindPython y FindPython3 soportan la ABI estable de Python sin GIL (SABIT) según PEP 803.
  24. La expresión generadora TARGET_OBJECTS admite el argumento opcional SOURCE_FILES:..., que limita el resultado a los objetos compilados desde esas fuentes.
  25. Swift: los generadores Ninja añaden la propiedad Swift_SEPARATE_MODULE_EMISSION (inicializada por CMAKE_Swift_SEPARATE_MODULE_EMISSION) para emitir .swiftmodule desde una arista de compilación propia; la política CMP0215 la activa por defecto y requiere CMP0157 y CMP0195 en NEW. Swift_MODULE_NAME sustituye ahora los guiones por guiones bajos, los objetivos Swift tienen nombre de paquete por defecto (política CMP0216), existe la propiedad Swift_PACKAGE_NAME y, en Windows, se soportan las expresiones $<TARGET_PDB_FILE:...>.
  26. CTest: permite reenviar argumentos adicionales a los ejecutables de test con el separador --, suma la opción --source-dir (junto con -T Configure permite configurar un directorio binario vacío) y, en modo Dashboard Client, la opción CoverageTool para cobertura con llvm-cov y la variable CTEST_SUBMIT_PARTS para limitar las partes enviadas.
  27. ctest_configure(), ctest_build(), ctest_test() y ctest_memcheck() aceptan PRESET y PRESETS_FILE, que también pueden indicarse con las variables CTEST_CONFIGURE_PRESET, CTEST_BUILD_PRESET, CTEST_TEST_PRESET, CTEST_PRESET y CTEST_PRESETS_FILE. ctest_update() añade VERSION_ONLY y VERSION_OVERRIDE.
  28. CPack: el generador Archive incorpora CPACK_ARCHIVE_ENCODING para la codificación de rutas, el generador NSIS suma CPACK_NSIS_IGNORE_COMPONENTS_PAGE para omitir la página de selección de componentes y CPACK_RPM_SPEC_MORE_DEFINE acepta una lista de definiciones.
  29. Obsoletos: las opciones -W[no-][error=]dev (nueva forma: -W[no-][error=]author), --warn-uninitialized (ahora -Wuninitialized), --no-warn-unused-cli (ahora -Wno-unused-cli) y las variables CMAKE_WARN_DEPRECATED y CMAKE_ERROR_DEPRECATED, sustituidas por cmake_diagnostic(). La propiedad de directorio MACROS ya no existe (política CMP0217).
  30. Otros cambios: un archivo solo puede pertenecer a un file set que no sea HEADERS por objetivo (CMP0211); macro() y los callbacks de variable_watch() conservan las barras invertidas en los argumentos (CMP0219); ctest termina con código distinto de cero si se ejecuta sin argumentos y no hay archivo de entrada de pruebas; los drivers de create_test_sourcelist() admiten -N para listar las pruebas, una por línea; los ejecutables indicados en DEPENDS de add_custom_command() ya no pierden el sufijo .exe al establecer dependencias (CMP0212); y los objetivos que ofrecen módulos de C++ pueden ser consumidos por objetivos con otras opciones y características de compilación.

Nuevos programas