Escriba un Makefile para compilar los archivos .c en cada directorio en sus respectivos archivos ejecutables

El proceso de escritura de un Makefile es el siguiente:

  1. Definir variables: defina variables como el compilador y las opciones de compilación.
  2. Definir archivo de destino: defina el nombre del archivo de destino.
  3. Definir archivos fuente: Defina todos los archivos fuente.
  4. Definir reglas: defina las reglas para compilar cada archivo fuente en un archivo objeto.
  5. Definir pseudodestino: define un pseudodestino que limpia archivos objeto y otros archivos intermedios.

El siguiente es un ejemplo de Makefile, suponiendo que cada directorio tiene un .carchivo fuente que termina en que debe compilarse en el archivo ejecutable correspondiente:

CC = gcc
CFLAGS = -Wall -Wextra -Werror
SRCDIRS = src1 src2 src3

TARGETS := $(patsubst %, %/target, $(SRCDIRS))

all: $(TARGETS)

%/target: %/*.c
	$(CC) $(CFLAGS) $^ -o $@

.PHONY: clean
clean:
	find . -name target -type f -delete
  • CC Define el compilador utilizado, aquí se utiliza gcc.
  • CFLAGS Las opciones de compilación están definidas y aquí se habilitan algunas opciones de advertencia.
  • SRCDIRS Define el directorio donde residen todos los archivos fuente.
  • TARGETS es una lista de todos los archivos ejecutables, que utiliza la función patsubst para reemplazar la ruta del archivo fuente con la ruta del archivo ejecutable.
  • all: $(TARGETS)Indica que todo depende de todos los archivos ejecutables, y $ make todos los archivos ejecutables se pueden generar escribiendo en la línea de comando.
  • %/target: %/*.cIndica una regla, compila todos los archivos de un directorio .c en los archivos ejecutables correspondientes y los almacena en un targetarchivo denominado en el directorio.
  • .PHONY: cleanIndica que clean es un pseudoobjetivo, no un archivo real, y todos los archivos ejecutables se pueden eliminar escribiendo en la línea de comando. donde el comando se usa para buscar el archivo nombrado y eliminarlo. $ make cleanfind target

Supongo que te gusta

Origin blog.csdn.net/FLM19990626/article/details/130983397
Recomendado
Clasificación