Comprensión simple de Makefile 2

Comprensión simple de Makefile 2

Establecer la ruta de búsqueda de archivos en makefile

En el archivo MAKE, puede establecer el directorio de búsqueda del archivo de destino y el archivo dependiente en la regla asignando un valor a VPATH. Haga primero las búsquedas en el directorio actual. Si no se encuentran archivos dependientes, make buscará VPATH de acuerdo con los directorios dados en VPATH. VPATH es válido para todos los archivos en el archivo Make.
Por ejemplo: VPATH = src:… / headers La
definición anterior especifica dos directorios, "src" y "… / headers", make buscará en este orden. Los directorios están separados por "dos puntos". (El directorio actual es el lugar de búsqueda de mayor prioridad)
También se puede usar el comando vpath. La diferencia con VPATH en uso es: vpath puede especificar diferentes directorios de búsqueda para diferentes tipos de archivos. Por ejemplo:
vpath% .c / src
vpath% .h… / headers
vpath% .c significa borrar todos los directorios de búsqueda establecidos por vpath en% .c (sin la ruta detrás)

Definir variables y variables de referencia

La definición y aplicación de las variables son las mismas que las de las variables de entorno Linux. El nombre de la variable debe estar en mayúscula. Una vez definida la variable, se puede citar encerrando el nombre de la variable entre paréntesis y prefijándolo con un símbolo "$".
Las principales funciones de las variables:
1. Guardar la lista de nombres de archivo
2. Guardar el nombre del comando ejecutable, como el compilador
3. Guardar los parámetros del compilador
Las variables generalmente se definen en el encabezado del archivo MAKE. Por convención, todas las variables makefile deben estar en mayúsculas.

Las principales variables predefinidas de GNU hacen

$ * Nombre del archivo de destino sin extensión
$ + Todos los archivos dependientes, separados por espacios y en orden de aparición, pueden contener archivos dependientes duplicados
$ <Nombre del primer archivo dependiente
$? Todos los archivos dependientes, separados por un espacio, la fecha de modificación de estos archivos dependientes es posterior a la fecha de creación del
objetivo $ @ El nombre completo del objetivo
$ ^ Todos los archivos dependientes, separados por espacios, no incluyen archivos dependientes duplicados
$% Si el objetivo es un miembro de archivo, entonces La variable representa el nombre del miembro del archivo de destino

3 variables predefinidas de uso común

1.  $@     表示要生成的目标
2.  $^     表示全部的依赖文件
3.  $<     表示第一个依赖文件
bin/cn_work : obj/main.o  obj/cn_work.o  obj/fun.o   
	gcc  $^  -o $@  (命令一定要用以Tab开头)
obj/cn_work.o : sources/cn_work.c 
	gcc  -I  headers   -c 	$<	-o  $@
obj/main.o : 	sources/main.c
	gcc  -I  headers   -c 	$<	-o  $@
obj/fun.o  :	 sources/fun.c
	gcc  -I  headers   -c 	$<	-o  $@
clean:
	rm -f bin/cn_work file_o/*.o

Los 3 parámetros de gcc:

  1. -o especifica el archivo de destino
    gcc sources / main.c -o bin / main
  2. -c Solo produce archivos de objeto al compilar sin vincular
    gcc -c sources / main.c -o obj / main.o
  3. -I especifica principalmente la ruta de búsqueda del archivo de encabezado
    gcc -I encabezados -c main.c -o main.o

Supongo que te gusta

Origin blog.csdn.net/weixin_46259642/article/details/113565548
Recomendado
Clasificación