Respostas:
make -C /path/to/dir
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.
makefile:
all:
gcc -Wall -Wpedantic -std=gnu99 -g src/test.c -o build/test
run:
./build/test
ou
run:
./../build/test
etc.