Como criar um makefile com um script de shell

2

Eu tenho um shell script e gostaria de convertê-lo em um makefile para que ele possa ser executado com o comando 'make all'.

Como eu faria isso?

Obrigado

    
por Duby 28.11.2012 / 10:53

3 respostas

2

Você pode criar um makefile mínimo contendo:

all:
        YOUR SHELL COMMANDS HERE

Mas você ainda não ganhou nada ao fazer isso, a menos que o reescreva para usar alguns dos recursos de um Makefile - vários destinos, dependências de destino, etc. Consulte aqui (ou muitos outros tutoriais do Makefile) para algumas informações sobre o que você pode fazer com um makefile.

(Note que os comandos do shell são executados com sh separadamente para cada linha, então se você estiver fazendo algo complexo como loops, definindo variáveis, ele não funcionará , e o recuo de comandos precisa ser um caractere TAB, não espaços.)

Um Makefile rápido para o caso descrito (avisos normais, provavelmente tem todos os tipos de casos de borda, pode matar o seu cão, etc):

src=$(wildcard pictures/*.jpg)
out=$(subst pictures,thumb,$(src))

all : $(out)

thumb/%.jpg: pictures/%.jpg
    convert $< -thumbnail 100 $@
    
por chronitis 28.11.2012 / 11:12
0

É melhor separar seus shell scripts em várias partes. Por exemplo. pré-construir, construir, pós-construir. Várias pequenas tarefas tornam mais fácil testar o script.

clean:
  rm -rf build

build:
  gcc sample.c

changelog:
  git log >> changelog.txt

package: changelog build
  zip release.zip a.out changelog.txt 

all: clean package
    
por orkoden 19.11.2013 / 12:47
0
clean:
  @-rm -rf build
  @echo removed 

build:
  gcc sample.c

changelog:
  git log >> changelog.txt

package: changelog build
  zip release.zip a.out changelog.txt 

all: clean package
    
por Suraj Kadam 10.09.2014 / 22:09