Eu escrevi um programa para uma tarefa que deveria imprimir sua saída em stdout. A especificação de atribuição requer a criação de um Makefile que, quando invocado, make run > outputFile
deve executar o programa e gravar a saída em um arquivo, com uma impressão digital SHA1 idêntica à fornecida na especificação.
Meu problema é que meu makefile:
...
run:
java myprogram
também imprime o comando que executa o meu programa (por exemplo, java myprogram) no arquivo de saída, para que meu arquivo inclua essa linha extra, causando a impressão digital incorreta.
Existe alguma maneira de executar um comando sem a chamada de comando ecoar na linha de comando?
make -s
faz isso, e IMHO é uma solução muito melhor aqui de qualquer maneira. Foi postado recentemente como uma resposta separada para esta pergunta.Ainda mais simples, use
make -s
(modo silencioso)!fonte
@
comandos dificulta a depuração e adiciona muita confusão..SILENT:
alvo. Veja make.mad-scientist.net/managing-recipe-echoing-Wall
ele ainda os imprime. Claro, por que você usaria-s
se também deseja ver avisos?Você também pode usar
.SILENT
Nesse caso,
make hi
o comandomake run
resultará , mas não será gerado.fonte
O efeito de preceder o comando com um
@
pode ser estendido para uma seção estendendo o comando usando uma barra invertida à direita na linha. Se um.PHONY
comando é desejado para suprimir a saída, pode-se iniciar a seção com:fonte