Sintaxis básica y variables de Makefile

Directorio de artículos


La sintaxis de make es variada y complicada. Aquí tienes algunas reglas básicas

reglas básicas

Las reglas básicas de Makefile son las siguientes:

目标(target):目标文件1  目标文件2
<tab> gcc -o 预建立的执行文件 目标文件1 目标文件2

Nota : La
línea de comando debe comenzar con la tecla Tab j

  • En Makefile # significa comentario
  • Debe ser el primer carácter en la línea de comando (por ejemplo, el comando del compilador gcc)
  • El destino (destino) y el archivo dependiente (es decir, el archivo de destino) deben estar separados por:

Si desea realizar dos o más operaciones de enlace de archivos: Por
ejemplo: si hay tres archivos: main.c print.c print.h, la
relación entre los tres es la siguiente: main.c (programa principal) dependiente -> print.c dependiente - > print.h
, el Makefile correspondiente se puede escribir de la siguiente manera:

  • Más complicado
test : main.o print.o
	gcc -o test main.o print.o
mian.o : main.c print.h
	gcc -c main.c
print.o : print.c print.h
	gcc -c print.c

clean:
	rm *.o
  • El más simple (deje que GNU derive la relación entre los tres archivos)
CC := gcc
objects := main.o print.o

test : &(objects)
	$(CC) -o test $(objects)
&(objects) : print.h
main.o : main.c
print.o : print.c

clean:
	rm *.o

De esta forma, nuestro Makefile tiene dos objetivos, probar y limpiar, si queremos construir una prueba, ingrese [make test], si queremos borrar todos los archivos .o, ingrese [make clean]. Y si primero desea borrar el archivo de destino y luego compilar el programa principal, ingrese [make clean test]

[Nota] La
sintaxis de Makefile y el script de shell bash no es la misma. La sintaxis básica de las variables es:

  • Las variables y el contenido de las variables están separados por "=", y puede haber espacios en ambos lados
  • La tecla [Tab] no está permitida a la izquierda de la variable
  • Las variables y los contenidos de las variables no pueden tener ":" en ambos lados de "="
  • Habitualmente, es mejor basar las variables en [letras mayúsculas]
  • Cuando use variables, use $ {variables} o $ (variables)
  • Se pueden aplicar variables de entorno en el shell, como la variable CFLAGS mencionada
  • Las variables también se pueden configurar en el modo de línea de comandos

Dado que gcc obtendrá activamente la variable de entorno CFLAGS al compilar, puede definir esta variable de entorno directamente en el shell, o definirla en el archivo Makefile, o establecerla en la línea de comando, como :

[root@zhang ~]# CFLAGS="-Wall" make clean main
# 这个操作在使用 make 编译时,会读取 CFLAGS 的变量内容

También puede hacer esto

LIBS = -lm
OBJS = main.o haha.o sin_value.o cos_value.o
CFLAGS = -Wall
main : $(OBJS)
	gcc -o main $(OBJS) $(LIBS)
clean :
	rm -f main &(OBJS)

Entre ellos, las reglas para usar variables de entorno son las siguientes:

  • Las variables de entorno agregadas después de la línea de comando make tienen prioridad;

  • La variable de entorno especificada en el Makefile es la segunda;

  • Las variables de entorno originales del shell son terceros.

  • $ @: representa el objetivo actual (objetivo)

Supongo que te gusta

Origin blog.csdn.net/qq_41782149/article/details/103677274
Recomendado
Clasificación