La Red de Conocimientos Pedagógicos - Currículum vitae - La diferencia entre un makefile de Linux con un script de conexión y uno sin un script de conexión

La diferencia entre un makefile de Linux con un script de conexión y uno sin un script de conexión

Los scripts de Shell se pueden llamar en Makefiles, pero los Makefiles y los scripts de Shell son diferentes. Este artículo intenta resumir las diferencias entre Makefiles y scripts de shell.

1. Todas las referencias a variables que comienzan con $ en el shell deben ir seguidas de {}, mientras que las variables en el Makefile deben ir seguidas de (). Un ejemplo es el siguiente:

Makefile

PATH="/data/"

SUBPATH=$(PATH)

Shell

PATH="/data/"

SUBPATH=${PATH}

2. Todas las palabras que comiencen con $ en el Makefile se interpretarán como variables en el Archivo Make. Si necesita llamar a una variable en el shell (o la posición de anclaje $ en una expresión regular), debe agregar dos signos $ ($$). Los ejemplos son los siguientes:

PATH="/data/"

todos:

echo ${PATH}

echo $$ Ejemplo de PATH El primer ${PATH} se refiere a la variable en el Makefile, no a la variable de entorno PATH en el Shell. La última se refiere a la variable de entorno PATH en el Shell.

3. Diferencias en los caracteres comodín

El comodín * en Shell representa todos los caracteres

El carácter comodín en Makefile representa todos los caracteres

4. En Makefile, el script de Shell solo se puede llamar en el destino y no se puede generar en ningún otro lugar. Por ejemplo, el siguiente código no produce ningún resultado:

VAR="Hello"

echo "$VAR"

all:

.. ...El código anterior no se generará en ningún momento y no está dentro del objetivo si el código anterior se cambia a lo siguiente:

VAR="Hola"

.

todos:

echo "$VAR"

....El código anterior ejecutará el comando echo al crear todo.

5. Ejecute el comando Shell en el Makefile y cree un proceso para su ejecución en una línea. Esta es también la razón por la que muchas líneas en muchos Makefiles terminan con "; \" para garantizar que el código sea una línea en lugar de varias líneas, de modo que el Makefile pueda ejecutarse en un proceso, por ejemplo:

SUBDIR = ejemplo de origen

todos:

@for subdir in $(SUBDIR \

do\

echo "edificio"; \

doneComo puede ver en lo anterior, cada línea en el bucle for termina con "; \".

6. Obtener el directorio actual

PATH=`pwd` Tenga en cuenta que es ``, no ''

Se recomienda leerlo o aprenda esto en Linux, específicamente Acerca de este capítulo, dirección 3w(punto)linuxprobe(punto)com.