Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 2340|Respuesta: 1

Introducción a GCC, CMake, CMakelist, Make, Makefile y Ninja

[Copiar enlace]
Publicado en 9/7/2024 20:44:28 | | |
1. ¡El nacimiento del CCG!

En 1985, en una noche oscura cuando sus dedos estaban fuera de la vista, un hombre extraño con barba, figura baja y pelo despeinado comenzó a escribir un conjunto de compiladores en lengua C. Esta ecfonía, más tarde conocida como el "mejor programador" y "padre del software libre", fue Richard Stallman. Tras dos años de duro trabajo, Richard Stallman, que tiene una barba más larga y el pelo más despeinado, ha completado la primera versión del compilador C, que llama GNU C Complier, que ahora es la fuente del famoso GCC. Más tarde, GCC se desarrolló rápidamente, y ahora GCC puede compilar no solo lenguajes C, sino también C++, Fortran, Pascal, Objective-C, Java, Ada y otros lenguajes. En los años 80 y 90 del siglo pasado, la frecuencia de la CPU, el tamaño del disco duro y el tamaño de la memoria de los ordenadores personales se medía en MB o incluso en KB, y el número de archivos de programa que había que compilar era pequeño, y los comandos GCC eran suficientes para gestionarlo.

¡Segundo, han surgido nuevos problemas! (hacer & archivar)

Con la mejora y popularización del rendimiento informático, un proyecto de software contiene cada vez más archivos fuente, como Linux, que se confunden fácilmente y cargan trabajo, lo cual es fácil de confundir y cargar, lo que hará que la gente se volva loca.

Richard Stallman y Roland McGrath co-desarrollaron el make y el makefile para resolver este problema. La herramienta make puede considerarse como una herramienta inteligente de procesamiento por lotes, que no tiene la función de compilar y enlazar, sino que utiliza un método similar al procesamiento por lotes: llamando a los comandos especificados por el usuario en el archivo makefile. ¿Qué es un makefile? El makefile es un archivo script, igual que la partitura de una canción, la herramienta make es como un director, el director dirige a toda la orquesta para que toque según la partitura, y la herramienta make se compila y enlaza según los comandos del makefile. El comando makefile contiene comandos para llamar a gcc (u otro compilador) para compilar un archivo fuente.

3. ¡Han vuelto a surgir problemas! (Cmake & CMakelist)

El makefile puede escribirse a mano en algunos proyectos sencillos, pero cuando el proyecto es muy grande, también resulta muy complicado escribirlo a mano. Y los makefiles para diferentes plataformas han aparecido uno tras otro, incluyendo GNU make, qmake de QT, MSnmake de Microsoft, BSD Make (pmake), Makepp, etc. Estas herramientas Make siguen diferentes especificaciones y estándares, y el formato Makefile que realizan varía mucho. Esto plantea un problema serio: si el software quiere ser multiplataforma, debe poder compilar en diferentes plataformas. Si usas la herramienta Make de arriba, tienes que escribir un makefile para cada estándar, lo cual será un trabajo complicado, y si cambias el makefile de la plataforma, tendrás que remodificarlo.

Así que, en ese momento, apareció la herramienta Cmake, y Cmake puede generar un archivo makefile para el make anterior más fácilmente. Por supuesto, cmake también tiene otras funciones, es decir, puede generar archivos de fabricación que pueden usarse en la plataforma correspondiente entre plataformas, y no tienes que modificarlo tú mismo. cmake es la capa superior de Makefile, y su propósito es producir makefiles portátiles y simplificar la enorme carga de trabajo de escribir makefiles por tu cuenta. Pero, ¿de qué sirve cmake para generar un makefile? También necesita generar un archivo makefile basado en un archivo llamado archivo CMakeLists.txt (nombre científico: archivo de configuración). Al final, CMakeLists.txt quién escribe el documento? Por supuesto, tú mismo lo escribiste.

¡Cuarto, han vuelto a aparecer nuevos problemas! (Ninja)

A medida que la ingeniería de software se vuelve más grande y compleja, el problema de la lenta ejecución de la fabricación se vuelve cada vez más grave.

Como resultado, un programador de Google lanzó Ninja, una herramienta de construcción centrada en la velocidad. Ninja no tiene todo tipo de funciones avanzadas, la sintaxis y el uso son muy sencillos, y especifica qué hacer con detalle, así que empieza a compilarse muy rápido. Según pruebas reales: con más de 30.000 archivos fuente, también es posible iniciar una compilación real en 1 segundo. En cambio, los Makefiles escritos por ingenieros senior también tardan entre 10 y 20 segundos en empezar a construirse.

5. ¡El final perfecto hasta ahora!

Cmake puede generar herramientas .ninja y .makefile. Como mucha gente no está familiarizada con cómo escribir archivos makefile y archivos ninja, cmake solo necesita una descripción sencilla del archivo de código fuente (es decir, CMakeLists.txt archivo) para generar automáticamente un archivo makefile de proyecto o archivo ninja, y luego empezar a compilar mediante ninja o make.


5 minutos para entender make/makefile/cmake/nmake

Recientemente, ¿te han hecho make, cmake, makefile... ... Estas cosas son mareantes, mira el siguiente artículo, quizá puedas entenderlo claramente.

1. CCG
Es la GNU Compiler Collection, o simplemente un compilador, que puede compilar muchos lenguajes de programación (incluyendo C, C++, Objective-C, Fortran, Java, etc.).

Cuando nuestro programa tiene solo un archivo fuente, podemos compilarlo directamente con el comando gcc.

¿Pero qué pasa si nuestro programa contiene muchos archivos fuente? Al compilar con comandos gcc uno a uno, es fácil confundirse y requerir mucho trabajo, por lo que aparece la siguiente herramienta de creación.

2. Haz
La herramienta make puede considerarse como una herramienta inteligente de procesamiento por lotes, que no tiene la función de compilar y enlazar, sino que utiliza un método similar al procesamiento por lotes: llamando a los comandos especificados por el usuario en el archivo makefile.

3. makefile
¿Qué es esto?

En pocas palabras, al igual que la partitura de una canción, la herramienta make es como un director, el director dirige a toda la orquesta para que toque según la partitura, y la herramienta make compila y enlaza según los comandos del makefile. El comando makefile contiene comandos para llamar a gcc (u otro compilador) para compilar un archivo fuente.

El makefile puede tomarse manualmente en algunos proyectos sencillos, pero cuando el proyecto es muy grande, el makefile manuscrito también resulta muy problemático.

4. Cmake
CMaK puede generar fácilmente un archivo makefile para el make anterior. Por supuesto, cmake tiene otras funciones mejores, es decir, puede generar makefiles que pueden usarse en la plataforma correspondiente entre plataformas, así que no tenemos que modificarlo nosotros mismos.

Pero, ¿de qué sirve cmake para generar un makefile? También necesita generar un archivo makefile basado en un archivo llamado archivo CMakeLists.txt (nombre científico: archivo de configuración).

5. CMakeList.txt
Al final, CMakeLists.txt quién escribe el documento? Querida, está escrita por tu propia letra.

6. Nmake
¿Qué es nmake?

nmake es un comando secundario en Microsoft Visual Studio, que necesita instalar VS, que en realidad puede considerarse equivalente a la fabricación de Linux, ¿entiendes?

Transferido desde:

El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.





Anterior:ERP Kingdee Cloud Starry Sky (1) Comprensión sencilla
Próximo:Paquete Rocky Linux 9 no encontrado: No hay coincidencia para la discusión: xxx
 Propietario| Publicado en 8/12/2024 8:57:06 |
MinGW ofrece un entorno de desarrollo de programas basado en GCC sencillo y cómodo para Windows. MinGW recopila una colección de archivos gratuitos de cabeceras y bibliotecas para uso de Windows; También integra GNU (http://www.gnu.org/), especialmente herramientas de desarrollo GNU como classic gcc, g++, make, etc. MinGW es un software completamente libre que simula el entorno de desarrollo GCC bajo Linux en la plataforma Windows, proporcionando un buen soporte básico para el desarrollo multiplataforma de C++ y proporcionando condiciones para que los programadores que trabajan bajo Windows se familiaricen con la organización de ingeniería C++ bajo Linux.
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com