Fiz alguns progressos depois de mais experiências e leituras. Eu acho que entendo a lógica agora.
Parece que todos os comandos de receita no makefile são exclusivamente comandos de shell uma vez sh.exe in no PATH
. Eles não podem ser comandos do Windows.
Após remover sh.exe de cygwin/bin
, o makefile original funcionou como eu esperava.
'cmd' também pode ser explicitamente especificado em vez do padrão 'sh' no makefile da seguinte forma:
clean:
cmd /c 'del /F /Q file.txt'
Se isso estiver correto, isso é um pouco decepcionante.
Por ter cygwin/bin
no 'PATH', eu estava assumindo que qualquer tipo de comando poderia ser usado no makefile, assim como nos comandos do windows ou no arquivo de lote.
O que ainda não faz muito sentido para mim é que os comandos do Windows funcionem quando o sh.exe não está ao alcance. Ainda falta parte da lógica.
(desculpe por postar no site errado, pensei que eu estava no stackoverflow. Se o moderador pode mover ou excluir este post, por favor, faça.