A criar comandos de impressão antes de executar quando não usar o CMake
a criar comandos de impressão do cmake antes de executar
Mas essa resposta não funciona para mim. Acho que essa resposta só funciona com o cmake. Que opções funcionam sem o cmake?Nota experimentada
make VERBOSE=1 target
make target VERBOSE=1
VERBOSE=1 make target
make V=1 target
make target V=1
V=1 make target
make -V target
make -v target
Nenhum deles funcionou.
O Make-v devolve
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for x86_64-pc-linux-gnu
2 answers
Por omissão, make
imprime todos os comandos antes de os Executar. Esta impressão pode ser suprimida por um dos seguintes mecanismos:
- caso a caso, adicionando
@
no início do comando - globalmente, adicionando o .Alvo silencioso.
- algures ao longo do processo de fabrico, invocando sub-marcas com uma das bandeiras
-s
,--silent
Quer--quiet
, como em$(MAKE) --silent -C someDir
, por exemplo. A partir desse momento, a EcoAção de comando é suprimida no sub-make.
Se o seu makefile não imprime os comandos, então ele provavelmente está usando um desses três mecanismos, e você tem que realmente inspecionar o makefile(s) para descobrir qual.
Como uma solução para evitar estes mecanismos de supressão de eco, você poderia redefinir a shell a ser usada para usar um modo de depuração, por exemplo make SHELL="/bin/bash -x" target
. Outras conchas têm opções semelhantes. Com essa abordagem, não é make
imprimir os comandos, mas a própria shell.
Se use a bandeira -n
ou --just-print
, os mecanismos de supressão de eco serão ignorados e você irá sempre ver todos os comandos que make
pensa que devem ser executados -- mas eles não são realmente executados, apenas impressos. Isso pode ser uma boa maneira de descobrir o que você pode realmente esperar ver.
A variável VERBOSE
não tem um significado padrão para {[[0]}, mas apenas se o seu makefile a interpretar.