[Linux] Breve introducción de Makefile

Tabla de contenido

Prefacio:

1. Reglas de archivos MAKE

En segundo lugar, la sintaxis de la función de Makefile

(1) patrón comodín

(2) Eliminar limpio

(3) Variable inmediata, variable retardada

(4) Funciones comunes de Makefile


3-1 El efecto que se logrará con Makefile_哔哩哔哩_bilibili  3-2 La introducción y las reglas de Makefile_哔哩哔哩_bilibili

3-3.Gramática de Makefile_哔哩哔哩_bilibili

Prefacio:

En el proceso de aprendizaje, es suficiente reconocer el papel de Makefile, comprender su gramática y reglas básicas , comprender y ser capaz de utilizar Makefile general para reducir la carga de trabajo en proyectos reales.

(1) Cuando use el comando gcc para compilar múltiples archivos .c, tome el siguiente como ejemplo, necesita compilar ac y bc en secuencia, si los archivos en él se modifican, tiene que volver a compilar todos los archivos nuevamente, esto es innecesario

 (2) El método anterior es muy inconveniente cuando se trata de programas grandes. Cuando modificamos el archivo fuente o el archivo de encabezado, volvemos a compilar los archivos involucrados y luego regeneramos la aplicación; este es un método de compilación más eficiente.

(3) Usando el método anterior, el comando make se usa a menudo para compilar programas en Linux, y las acciones realizadas por el comando make dependen del archivo MakeFile.

(4) El principio básico de Makefile: al comparar el tiempo de modificación del archivo de destino y el archivo dependiente, se juzga si se ha modificado y se ejecuta la acción correspondiente cuando el archivo dependiente es más nuevo. 

(5) El papel del Makefile general existente:

  • ① Admite múltiples directorios, directorios de múltiples capas y múltiples archivos
  • ②Soporte para establecer opciones de compilación para todos los archivos
  • ③Soporte para establecer opciones de compilación para un directorio determinado
  • ④Soporte para establecer opciones de compilación por separado para un archivo

1. Reglas de archivos MAKE

Cuando ejecutamos el comando make, buscaremos el Makefile en el directorio actual y realizaremos operaciones de acuerdo con sus instrucciones para generar el primer destino.

Una regla simple de Makefile se ve así:

target (objetivo) ... : dependencias (requisitos previos) ...
<tabulador> Comando (comando)
Si el "archivo de dependencia" es más nuevo que el "archivo de destino" o el archivo de destino no existe, ejecute el "comando" para regenerar el "archivo de destino".
Los ejemplos específicos son los siguientes:
Cuando modificamos el archivo ac, recompilamos ac y relink para generar el programa correspondiente.

En segundo lugar, la sintaxis de la función de Makefile

(1) patrón comodín

Comodín (patrón): optimizar reglas similares

$@: indica el objetivo $<: indica el primer archivo dependiente $^: indica todos los archivos dependientes

prueba: ao bo co
        gcc -o prueba $^

%.o : %.c
        gcc -c -o $@ $<

(2) borrar limpio

Se utiliza para eliminar archivos de destino.

 limpiar:
        rm *.o prueba

.PHONY: limpio

(3) Variable inmediata, variable retardada

A = xxx // Variable de retardo, se determinará cuando se use

B ?= xxx // Variable de retardo, la asignación solo es exitosa cuando se define por primera vez; si se ha definido, esta asignación no es válida
C := xxx // Variable inmediata, determinada en el momento de la definición
D += yyy // Si antes D era una variable retrasada, ahora sigue siendo una variable retrasada;

 Las variables anteriores, hacen una pequeña prueba.

De acuerdo con la descripción anterior, los resultados de salida correspondientes de A, B y C son los siguientes:

(4) Funciones comunes de Makefile

//Asigne cada elemento en la lista a var, y luego cambie var a la forma descrita por el texto
$( foreach var, lista, texto)
//Ya sea que existan los archivos enumerados en el patrón, enumere todos los archivos existentes
$( patrón comodín )
// Sacar el valor que se ajusta (no se ajusta) al formato del patrón en el texto
$( patrón de filtro ...,texto)
$( patrón de filtro ...,texto)
//Encuentre las palabras en el texto que coincidan con el formato del patrón y reemplácelas con reemplazo
$( patrón patsubst ,reemplazo,texto)

La función anterior hace una pequeña aplicación de prueba.

El resultado correspondiente:

Supongo que te gusta

Origin blog.csdn.net/weixin_42373086/article/details/129889583
Recomendado
Clasificación