2010-03-23 30 views

Respuesta

24

Al igual que llamar a cualquier otro comando desde un makefile:

target: prerequisites 
    shell_script arg1 arg2 arg3 

En cuanto a su explicación adicional:

.PHONY: do_script 

do_script: 
    shell_script arg1 arg2 arg3 

prerequisites: do_script 

target: prerequisites 
+0

pero necesito ejecutar el script antes de los requisitos previos –

+0

@Matthew, entonces su archivo MAKE está configurado incorrectamente. Cree un nuevo objetivo '.PHONY' del que dependan sus requisitos previos y ejecute el script en ese destino. –

+0

Editado con más para su caso. –

5

Cada una de las acciones en la norma makefile es un comando que será ejecutado subshell. Debe asegurarse de que cada comando sea independiente, ya que cada uno se ejecutará dentro de una subshell separada.

Por esta razón, es frecuente encontrar que los saltos de línea se escaparon cuando el autor quiere varios comandos a ejecutar en el mismo subnivel:

targetfoo: 
     command_the_first foo bar baz 
     command_the_second wibble wobble warble 
     command_the_third which is rather too long \ 
      to fit on a single line so \ 
      intervening line breaks are escaped 
     command_the_fourth spam eggs beans 
0
Tal vez no

la forma "correcta" de hacerlo como las respuestas ya proporcionadas , pero me encontré con esta pregunta porque quería que mi archivo MAKE ejecutara un script que escribí para generar un archivo de cabecera que proporcionaría la versión para todo un paquete de software. Tengo un buen número de objetivos en este paquete, y no quería agregar un nuevo requisito previo para todos ellos. Poner esto al principio de mi makefile funcionó para mí

$(shell ./genVer.sh) 

que le dice a hacer simplemente ejecutar un comando de shell. ./genVer.sh es la ruta (el mismo directorio que el archivo MAKE) y el nombre de mi script para ejecutar. Esto se ejecuta sin importar el objetivo que especifique (incluido el clean, que es el inconveniente, pero en última instancia, no es un gran problema para mí).

Cuestiones relacionadas