O que é $ (MAKE) ou $ {MAKE}, na verdade, deveria significar em fazer linguagem de script

0

Qual é o $(MAKE) ou ${MAKE} que está realmente se apresentando em todo o processo de criação de make . ele está invocando um processo que é semelhante à sub-rotina, ou seja, em termos mais simples "chamar uma função", ou está iniciando um processo recursivo para o início de seu próprio arquivo?

    
por abdan 11.03.2018 / 00:06

2 respostas

0

O programa make define uma variável MAKE que pode ser usada em makefiles como $(MAKE) ou ${MAKE} . O último é útil porque os scripts de shell reconhecem essa sintaxe e é possível reutilizar alguns fragmentos de script entre os dois.

Não há muita sobreposição entre a sintaxe shell / make, pois make trata coisas como $$ de forma diferente do shell.

Solucionando o ponto da pergunta: a variável MAKE ajuda na recursão, pois o programa pode não ter o nome make (por exemplo, gmake , pmake ) e você precisa que essa informação seja repetida com sucesso no mesmo programa. O programa make (no entanto, é (re) nomeado)) reconhece essa recursão se a variável é usada ou não.

Outras leituras: POSIX make

    
por 11.03.2018 / 00:53
0

$(MAKE) contém um caminho para o programa atual, a menos que você o sobrescreva.

Se você acabou de chamar make ou o nome de sua implementação do make, $(MAKE) deve conter apenas esse nome, pois sua implementação do make foi chamada por meio de PATH search. Verifique isso, por exemplo, chamando:

cd /usr/bin
./make -f /dev/null | grep MAKE

Se você chamar sua implementação do make por meio de um caminho absoluto ou relativo, $(MAKE) conterá o nome do caminho absoluto para sua implementação do make.

Isso permite que você use $(MAKE) em seus arquivos make de uma forma que lhe conceda que você sempre chamará o mesmo programa make, mesmo no caso de ser um binário temporário compilado com mensagens de depuração e instalado em qualquer lugar.

BTW: você pode obter o valor inicial configurado pelo seu programa make chamando:

$make -f /dev/null -p | grep MAKE
    
por 09.05.2018 / 15:52