Grump - que não está na marca padrão; deve ser uma extensão GNU. Como você diz Linux e Unix, não está claro qual você deseja, mas a opção -C não funcionará no Solaris 10 (/ usr / ccs / bin / make), AIX (/ usr / bin / make) ou HP-UX 11.23 (/ usr / bin / make). Ainda assim, 1 em cada 4 não é tão ruim.
Jonathan Leffler
6
Ele também funciona no BSD make, então não é apenas uma extensão GNU.
Chris Dodd
4
verifique se 'C' está em maiúsculas.
precisa saber é o seguinte
100
Como observado em outras respostas, o make (1) tem uma -C opção para isso; vários comandos têm opções semelhantes (por exemplo, tar). É útil observar que, para outros comandos que não possuem essas opções, o seguinte pode ser usado:
(cd /dir/path && command-to-run)
Isso executa o comando em um sub shell que primeiro altera seu diretório de trabalho (enquanto deixa o diretório de trabalho do shell pai sozinho). Aqui && é usado em vez de ; capturar casos de erro em que o diretório não pode ser alterado.
Se o motivo pelo qual você não deseja fazer o cd para um diretório for porque você precisa permanecer no diretório atual para uma tarefa posterior, use pushd e popd:
pushd ProjectDir ; make ; popd
Isso vai para o ProjectDir, executa make e volta para onde você estava.
Como observado em outras respostas, o make (1) tem uma
-C
opção para isso; vários comandos têm opções semelhantes (por exemplo, tar). É útil observar que, para outros comandos que não possuem essas opções, o seguinte pode ser usado:Isso executa o comando em um sub shell que primeiro altera seu diretório de trabalho (enquanto deixa o diretório de trabalho do shell pai sozinho). Aqui
&&
é usado em vez de;
capturar casos de erro em que o diretório não pode ser alterado.fonte
Se o motivo pelo qual você não deseja fazer o cd para um diretório for porque você precisa permanecer no diretório atual para uma tarefa posterior, use pushd e popd:
Isso vai para o ProjectDir, executa make e volta para onde você estava.
fonte
Além disso, você pode usar:
fonte
makefile:
ou
etc.
fonte