fbpx
Wikipedia

CMake

CMake es una herramienta multiplataforma de generación o automatización de código. El nombre es una abreviatura para "cross platform make" (make multiplataforma); más allá del uso de "make" en el nombre, CMake es una suite separada y de más alto nivel que el sistema make común de Unix, siendo similar a las autotools.

CMake
Información general
Tipo de programa build automation
Autor Kitware
Desarrollador Andy Cedilnik, Bill Hoffman, Brad King, Ken Martin, Alexander Neundorf
Modelo de desarrollo Software libre
Licencia Nueva licencia BSD
Información técnica
Programado en C, C++[2]
Plataformas admitidas multiplataforma
Interfaz gráfica predeterminada Qt
Versiones
Última versión estable 3.20.5 [1]​ (info) 21 de junio de 2021 (1 mes y 25 días)
Última versión en pruebas 3.21.0-rc1 (info) 23 de junio de 2021 (1 mes y 23 días)
Asistencia técnica
Enlaces
Sitio web oficial
Repositorio de código
Seguimiento de errores

CMake es un software libre y de código abierto multiplataforma para gestionar la automatización de la construcción del software utilizando un método independiente del compilador. Soporta jerarquías de directorios y aplicaciones que dependen de múltiples bibliotecas. Se utiliza en conjunción con entornos de construcción nativos como Make, Qt Creator, Ninja, Xcode de Apple, y Microsoft Visual Studio. Tiene dependencias mínimas, requiriendo sólo un compilador C++ en su propio sistema de construcción.

Características

CMake es una familia de herramientas diseñada para construir, probar y empaquetar software. CMake se utiliza para controlar el proceso de compilación del software usando ficheros de configuración sencillos e independientes de la plataforma. Cmake 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. Al contrario que el GNU build system, que está restringido a plataformas Unix, CMake soporta la generación de ficheros para varios sistemas operativos, lo que facilita el mantenimiento y elimina la necesidad de tener varios conjuntos de ficheros para cada plataforma.

CMake puede manejar construcciones en el lugar y fuera del lugar, permitiendo varias construcciones del mismo árbol fuente, y compilación cruzada. La capacidad de construir un árbol de directorios fuera del árbol de código fuente es una característica clave, asegurando que si se elimina un directorio de construcción, los archivos de código fuente no se vean afectados.

CMake puede localizar ejecutables, archivos y bibliotecas. Estas ubicaciones se almacenan en un cache, que puede ser adaptado antes de generar los archivos de destino. La caché puede ser editada con un editor gráfico, que se incluye en el proyecto.

Las jerarquías de directorios complicadas y las aplicaciones que dependen de varias bibliotecas están bien soportadas por CMake. Por ejemplo, CMake es capaz de acomodar un proyecto que tiene varios kits de herramientas, o bibliotecas que tienen varios directorios cada una. Además, CMake puede trabajar con proyectos que requieren la creación de ejecutables antes de generar código para ser compilado para la aplicación final. Su diseño de código abierto y extensible permite que CMake se adapte según sea necesario para proyectos específicos.[3]

CMake puede generar archivos de proyecto para varios IDEs destacados, como Microsoft Visual Studio, Xcode, y Eclipse CDT. También puede producir scripts de construcción para MSBuild o NMake en Windows; Unix Make en plataformas tipo Unix como Linux, macOS, y Cygwin; y Ninja tanto en Windows como en plataformas tipo Unix.

Proceso de construcción

El proceso de construcción con CMake tiene lugar en dos etapas. En primer lugar, se crean los archivos de construcción estándar a partir de los archivos de configuración. Luego se utilizan las herramientas de construcción nativas de la plataforma para la construcción real.[3]

El proceso de construcción se controla creando uno o más ficheros CMakeLists.txt en cada directorio (incluyendo subdirectorios). Cada CMakeLists.txt consiste en uno o más comandos. Cada comando tiene la forma COMANDO (argumentos...) donde COMANDO es el nombre del comando, y argumentos es una lista de argumentos separados por espacios. CMake provee comandos predefinidos y definidos por el usuario. Existen generadores makefile para Unix, Borland make, Watcom make, MinGW, MSYS y Microsoft NMake. También es posible generar ficheros de proyecto para Code::Blocks, Eclipse CDT, Microsoft Visual Studio de la 6 a la 10 incluyendo versiones de 64 bits y KDevelop.

Cada proyecto de construcción contiene un archivo CMakeLists.txt, en cada (sub)directorio, que controla el proceso de construcción. El archivo CMakeLists.txt tiene uno o más comandos en forma de COMANDO (argumentos...), donde COMANDO representa el nombre de cada comando y args la lista de argumentos, cada uno separado por un espacio en blanco. Aunque hay muchas reglas incorporadas para compilar las bibliotecas de software (estática y dinámica) y los ejecutables, también hay disposiciones para reglas de compilación personalizadas. Algunas dependencias de compilación se pueden determinar automáticamente. Los usuarios avanzados también pueden crear e incorporar generadores de makefiles adicionales para soportar sus necesidades específicas de compilación y de sistema operativo (SO).

Internos

Los programas ejecutables CMake, CPack, CTest están escritos en el lenguaje de programación C++. Gran parte de la funcionalidad de CMake se implementa en módulos que están escritos en el lenguaje CMake. Desde la versión 3.0, la documentación de CMake utiliza el marcado reStructuredText. Las páginas HTML y las páginas de manual son generadas por el generador de documentación Sphinx.

Historia

CMake se creó en respuesta a la necesidad de disponer de un entorno multiplataforma apropiado de construcción para el Insight Segmentation and Registration Toolkit (ITK) creado por la United States National Library of Medicine como parte del Visible Human Project. Fue influenciado por un sistema anterior llamado pcmaker creado por Ken Martin y otros desarrolladores para soportar el Visualization Toolkit (VTK), un sistema para gráficos 3D y visualización libres.

El desarrollo de CMake comenzó en 1999 en respuesta a la necesidad de un entorno de construcción multiplataforma para el Insight Segmentation and Registration Toolkit (ITK).[4]​ El proyecto está financiado por la Biblioteca Nacional de Medicina de Estados Unidos como parte del Proyecto Humano Visible. Fue inspirado parcialmente por pcmaker, que fue hecho por Ken Martin y otros desarrolladores para apoyar el Visualization Toolkit (VTK). En Kitware, Bill Hoffman mezcló componentes de pcmaker con sus propias ideas, esforzándose por imitar la funcionalidad de configurar scriptsUnix. CMake se implementó por primera vez en 2000 y se desarrolló en 2001.

Para crear CMake, Bill Hoffman en Kitware incorporó algunas ideas de pcmaker, y añadió más cosas propias, con el pensamiento de adoptar algunas de las funcionalidades del GNU build system. La implementación inicial de CMake tuvo lugar a mediados del 2000, con un desarrollo acelerado a comienzos del 2001. Muchas mejoras se debieron a influencias de otros desarrolladores a la hora de incorporar CMake a sus propios sistemas. Por ejemplo, la comunidad de VXL adoptó CMake, contribuyendo con muchas características esenciales. Brad King añadió varias características para dar soporte a CABLE y GCC-XML, un juego de herramientas de envoltura automáticas; y GE Corporate R&D necesitaba soporte para su infraestructura de pruebas (DART). Otras funcionalidades se añadieron para soportar la transición de VTK's a CMake, y soportar ParaView, un sistema de visualización paralela para el Advanced Computing Lab en el Laboratorio Nacional de Los Álamos.

El desarrollo y las mejoras continuas fueron impulsadas por la incorporación de CMake en los propios sistemas de los desarrolladores, incluyendo el Proyecto VXL [aclaración requerida], las características de CABLE[5]​ agregadas por Brad King,[aclaración requerida] y GE Corporate R&D para el apoyo de DART.[aclaración requerida] Se crearon características adicionales cuando VTK hizo la transición a CMake para su entorno de construcción y para el soporte de ParaView.

La versión 3.0 fue lanzada en junio de 2014.[6]​ It has been described as the beginning of "Modern CMake".[7]​ Los expertos ahora aconsejan evitar las variables a favor de targets y properties.[8]​ Los comandos add_compile_options, include_directories, link_directories, link_libraries que estaban en el núcleo de CMake 2 ahora deben ser reemplazados por comandos específicos de destino.

Documentación y tutoriales

Aparte de la documentación oficial de CMake, existe un libro titulado Mastering CMake, publicado por Kitware.

Principales funcionalidades

  • Ficheros de configuración escritos en un lenguaje de scripting específico para CMake.
  • Análisis automático de dependencias para C, C++, Fortran, y Java.
  • Soporte para SWIG, Qt, FLTK, a través del lenguaje de scripting de CMake.
  • Soporte para varias versiones de Microsoft Visual Studio, incluyendo la 6, 7, 7.1, 8.0, 9.0 y 10.0
  • Genera ficheros para Eclipse CDT (C/C++ Development Tools).
  • Detección de cambios en ficheros usando timestamps tradicionales.
  • Soporte para builds paralelos.
  • Compilador cruzado
  • Vista global de todas las dependencias, usando CMake para generar un diagrama graphviz.
  • Soporte para builds multiplataforma.
  • Integrado con DART (software), CDash, CTest y CPack, una colección de herramientas para prueba y liberación de software.

CTest, CPack, CDash

Kitware desarrolló estas herramientas en colaboración con muchos otros. Incluyen CMake, CTest, CPack y CDash. CPack es una utilidad de empaquetamiento y despliegue. CTest es un cliente de pruebas libre.

CPack

CPack es un sistema de empaquetamiento para distribuciones de software que está estrechamente integrado en CMake, pero que puede funcionar sin él. Puede ser usado para generar:

Aplicaciones que utilizan CMake

Véase también

Referencias

  1. «CMake Release Tags on GitLab». Consultado el 26 de junio de 2021. 
  2. «The CMake Open Source Project on OpenHub». OpenHub. Consultado el 9 de abril de 2016. 
  3. Neundorf, Alexander (21 de junio de 2006). «Why the KDE project switched to CMake—and how». LWN.net. 
  4. «FLOSS Weekly 111: CMake». podcast. TWiT Network. Consultado el 27 de febrero de 2011. 
  5. . Archivado desde el original el 19 de junio de 2013. Consultado el 31 de diciembre de 2019. 
  6. https://cmake.org/pipermail/cmake/2014-June/057793.html
  7. https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1#file-effective_modern_cmake-md
  8. https://github.com/boostcon/cppnow_presentations_2017/blob/master/05-19-2017_friday/effective_cmake__daniel_pfeifer__cppnow_05-19-2017.pdf, https://gist.github.com/mbinna/c61dbb39bca0e4fb7d1f73b0d66a4fd1

Enlaces externos

  • Página web oficial (en inglés)
  •   CMake en GitHub.
  • CMake Examples Wiki
  • CMake Tools for Visual Studio
  • La arquitectura de las aplicaciones de código abierto: CMake
  • Empaquetamiento con CPack
  • C++Cast: Professional CMake
  • CMake
  • CMake Wiki
  • Documentación
  •   Datos: Q1023904
  •   Multimedia: CMake

cmake, este, artículo, sección, necesita, referencias, aparezcan, publicación, acreditada, este, aviso, puesto, julio, 2015, herramienta, multiplataforma, generación, automatización, código, nombre, abreviatura, para, cross, platform, make, make, multiplatafor. Este articulo o seccion necesita referencias que aparezcan en una publicacion acreditada Este aviso fue puesto el 28 de julio de 2015 CMake es una herramienta multiplataforma de generacion o automatizacion de codigo El nombre es una abreviatura para cross platform make make multiplataforma mas alla del uso de make en el nombre CMake es una suite separada y de mas alto nivel que el sistema make comun de Unix siendo similar a las autotools CMakeInformacion generalTipo de programabuild automationAutorKitwareDesarrolladorAndy Cedilnik Bill Hoffman Brad King Ken Martin Alexander NeundorfModelo de desarrolloSoftware libreLicenciaNueva licencia BSDInformacion tecnicaProgramado enC C 2 Plataformas admitidasmultiplataformaInterfaz grafica predeterminadaQtVersionesUltima version estable3 20 5 1 info 21 de junio de 2021 1 mes y 25 dias Ultima version en pruebas3 21 0 rc1 info 23 de junio de 2021 1 mes y 23 dias Asistencia tecnicaEnlacesSitio web oficial Repositorio de codigo Seguimiento de errores editar datos en Wikidata CMake es un software libre y de codigo abierto multiplataforma para gestionar la automatizacion de la construccion del software utilizando un metodo independiente del compilador Soporta jerarquias de directorios y aplicaciones que dependen de multiples bibliotecas Se utiliza en conjuncion con entornos de construccion nativos como Make Qt Creator Ninja Xcode de Apple y Microsoft Visual Studio Tiene dependencias minimas requiriendo solo un compilador C en su propio sistema de construccion Indice 1 Caracteristicas 2 Proceso de construccion 3 Internos 4 Historia 5 Documentacion y tutoriales 6 Principales funcionalidades 7 CTest CPack CDash 8 CPack 9 Aplicaciones que utilizan CMake 10 Vease tambien 11 Referencias 12 Enlaces externosCaracteristicas EditarCMake es una familia de herramientas disenada para construir probar y empaquetar software CMake se utiliza para controlar el proceso de compilacion del software usando ficheros de configuracion sencillos e independientes de la plataforma Cmake 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 configuracion en el caso de CMake llamados CMakeLists txt Al contrario que el GNU build system que esta restringido a plataformas Unix CMake soporta la generacion de ficheros para varios sistemas operativos lo que facilita el mantenimiento y elimina la necesidad de tener varios conjuntos de ficheros para cada plataforma CMake puede manejar construcciones en el lugar y fuera del lugar permitiendo varias construcciones del mismo arbol fuente y compilacion cruzada La capacidad de construir un arbol de directorios fuera del arbol de codigo fuente es una caracteristica clave asegurando que si se elimina un directorio de construccion los archivos de codigo fuente no se vean afectados CMake puede localizar ejecutables archivos y bibliotecas Estas ubicaciones se almacenan en un cache que puede ser adaptado antes de generar los archivos de destino La cache puede ser editada con un editor grafico que se incluye en el proyecto Las jerarquias de directorios complicadas y las aplicaciones que dependen de varias bibliotecas estan bien soportadas por CMake Por ejemplo CMake es capaz de acomodar un proyecto que tiene varios kits de herramientas o bibliotecas que tienen varios directorios cada una Ademas CMake puede trabajar con proyectos que requieren la creacion de ejecutables antes de generar codigo para ser compilado para la aplicacion final Su diseno de codigo abierto y extensible permite que CMake se adapte segun sea necesario para proyectos especificos 3 CMake puede generar archivos de proyecto para varios IDEs destacados como Microsoft Visual Studio Xcode y Eclipse CDT Tambien puede producir scripts de construccion para MSBuild o NMake en Windows Unix Make en plataformas tipo Unix como Linux macOS y Cygwin y Ninja tanto en Windows como en plataformas tipo Unix Proceso de construccion EditarEl proceso de construccion con CMake tiene lugar en dos etapas En primer lugar se crean los archivos de construccion estandar a partir de los archivos de configuracion Luego se utilizan las herramientas de construccion nativas de la plataforma para la construccion real 3 El proceso de construccion se controla creando uno o mas ficheros CMakeLists txt en cada directorio incluyendo subdirectorios Cada CMakeLists txt consiste en uno o mas comandos Cada comando tiene la forma COMANDO argumentos donde COMANDO es el nombre del comando y argumentos es una lista de argumentos separados por espacios CMake provee comandos predefinidos y definidos por el usuario Existen generadores makefile para Unix Borland make Watcom make MinGW MSYS y Microsoft NMake Tambien es posible generar ficheros de proyecto para Code Blocks Eclipse CDT Microsoft Visual Studio de la 6 a la 10 incluyendo versiones de 64 bits y KDevelop Cada proyecto de construccion contiene un archivo CMakeLists txt en cada sub directorio que controla el proceso de construccion El archivo CMakeLists txt tiene uno o mas comandos en forma de COMANDO argumentos donde COMANDO representa el nombre de cada comando y args la lista de argumentos cada uno separado por un espacio en blanco Aunque hay muchas reglas incorporadas para compilar las bibliotecas de software estatica y dinamica y los ejecutables tambien hay disposiciones para reglas de compilacion personalizadas Algunas dependencias de compilacion se pueden determinar automaticamente Los usuarios avanzados tambien pueden crear e incorporar generadores de makefiles adicionales para soportar sus necesidades especificas de compilacion y de sistema operativo SO Internos EditarLos programas ejecutables CMake CPack CTest estan escritos en el lenguaje de programacion C Gran parte de la funcionalidad de CMake se implementa en modulos que estan escritos en el lenguaje CMake Desde la version 3 0 la documentacion de CMake utiliza el marcado reStructuredText Las paginas HTML y las paginas de manual son generadas por el generador de documentacion Sphinx Historia EditarCMake se creo en respuesta a la necesidad de disponer de un entorno multiplataforma apropiado de construccion para el Insight Segmentation and Registration Toolkit ITK creado por la United States National Library of Medicine como parte del Visible Human Project Fue influenciado por un sistema anterior llamado pcmaker creado por Ken Martin y otros desarrolladores para soportar el Visualization Toolkit VTK un sistema para graficos 3D y visualizacion libres El desarrollo de CMake comenzo en 1999 en respuesta a la necesidad de un entorno de construccion multiplataforma para el Insight Segmentation and Registration Toolkit ITK 4 El proyecto esta financiado por la Biblioteca Nacional de Medicina de Estados Unidos como parte del Proyecto Humano Visible Fue inspirado parcialmente por pcmaker que fue hecho por Ken Martin y otros desarrolladores para apoyar el Visualization Toolkit VTK En Kitware Bill Hoffman mezclo componentes de pcmaker con sus propias ideas esforzandose por imitar la funcionalidad de configurar scriptsUnix CMake se implemento por primera vez en 2000 y se desarrollo en 2001 Para crear CMake Bill Hoffman en Kitware incorporo algunas ideas de pcmaker y anadio mas cosas propias con el pensamiento de adoptar algunas de las funcionalidades del GNU build system La implementacion inicial de CMake tuvo lugar a mediados del 2000 con un desarrollo acelerado a comienzos del 2001 Muchas mejoras se debieron a influencias de otros desarrolladores a la hora de incorporar CMake a sus propios sistemas Por ejemplo la comunidad de VXL adopto CMake contribuyendo con muchas caracteristicas esenciales Brad King anadio varias caracteristicas para dar soporte a CABLE y GCC XML un juego de herramientas de envoltura automaticas y GE Corporate R amp D necesitaba soporte para su infraestructura de pruebas DART Otras funcionalidades se anadieron para soportar la transicion de VTK s a CMake y soportar ParaView un sistema de visualizacion paralela para el Advanced Computing Lab en el Laboratorio Nacional de Los Alamos El desarrollo y las mejoras continuas fueron impulsadas por la incorporacion de CMake en los propios sistemas de los desarrolladores incluyendo el Proyecto VXL aclaracion requerida las caracteristicas de CABLE 5 agregadas por Brad King aclaracion requerida y GE Corporate R amp D para el apoyo de DART aclaracion requerida Se crearon caracteristicas adicionales cuando VTK hizo la transicion a CMake para su entorno de construccion y para el soporte de ParaView La version 3 0 fue lanzada en junio de 2014 6 It has been described as the beginning of Modern CMake 7 Los expertos ahora aconsejan evitar las variables a favor de targets y properties 8 Los comandos add compile options include directories link directories link libraries que estaban en el nucleo de CMake 2 ahora deben ser reemplazados por comandos especificos de destino Documentacion y tutoriales EditarAparte de la documentacion oficial de CMake existe un libro titulado Mastering CMake publicado por Kitware Principales funcionalidades EditarFicheros de configuracion escritos en un lenguaje de scripting especifico para CMake Analisis automatico de dependencias para C C Fortran y Java Soporte para SWIG Qt FLTK a traves del lenguaje de scripting de CMake Soporte para varias versiones de Microsoft Visual Studio incluyendo la 6 7 7 1 8 0 9 0 y 10 0 Genera ficheros para Eclipse CDT C C Development Tools Deteccion de cambios en ficheros usando timestamps tradicionales Soporte para builds paralelos Compilador cruzado Vista global de todas las dependencias usando CMake para generar un diagrama graphviz Soporte para builds multiplataforma Linux y otros sistemas POSIX incluyendo AIX BSD HP UX IRIX SGI y Solaris Mac OS X Windows 95 98 NT 2000 XP Windows Vista Windows 7 y MinGW MSYS Integrado con DART software CDash CTest y CPack una coleccion de herramientas para prueba y liberacion de software CTest CPack CDash EditarKitware desarrollo estas herramientas en colaboracion con muchos otros Incluyen CMake CTest CPack y CDash CPack es una utilidad de empaquetamiento y despliegue CTest es un cliente de pruebas libre CPack EditarCPack es un sistema de empaquetamiento para distribuciones de software que esta estrechamente integrado en CMake pero que puede funcionar sin el Puede ser usado para generar Linux RPM deb y gzip distribuciones tanto de binarios como de codigo fuente NSIS archivos para Microsoft Windows Paquetes Mac OS XAplicaciones que utilizan CMake EditarAvidemux Compiz Kicad KVIrc LMMS MiKTeX MuseScore MySQL OpenCV Poppler PvPGN Quantum GIS Scribus Second Life SuperTux OGRE 3D RyzomVease tambien Editar Portal Software libre y de codigo abierto Contenido relacionado con Software libre y de codigo abierto Plantilla Section link configurar script GYP Genere sus proyectos imake Meson Automake Autoconf Premake SCons VTK Waf qmake AutotoolsReferencias Editar CMake Release Tags on GitLab Consultado el 26 de junio de 2021 The CMake Open Source Project on OpenHub OpenHub Consultado el 9 de abril de 2016 a b Neundorf Alexander 21 de junio de 2006 Why the KDE project switched to CMake and how LWN net FLOSS Weekly 111 CMake podcast TWiT Network Consultado el 27 de febrero de 2011 CABLE Archivado desde el original el 19 de junio de 2013 Consultado el 31 de diciembre de 2019 https cmake org pipermail cmake 2014 June 057793 html https gist github com mbinna c61dbb39bca0e4fb7d1f73b0d66a4fd1 file effective modern cmake md https github com boostcon cppnow presentations 2017 blob master 05 19 2017 friday effective cmake daniel pfeifer cppnow 05 19 2017 pdf https gist github com mbinna c61dbb39bca0e4fb7d1f73b0d66a4fd1Enlaces externos EditarPagina web oficial en ingles CMake en GitHub CMake Examples Wiki CMake Tools for Visual Studio La arquitectura de las aplicaciones de codigo abierto CMake Empaquetamiento con CPack C Cast Professional CMake CMake CMake Wiki Documentacion Listas de correo Datos Q1023904 Multimedia CMakeObtenido de https es wikipedia org w index php title CMake amp oldid 136600786, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos