In Unix, can I run make
in a directory without cd
\'ing to that directory first?
If the reason you don't want to cd to a directory is because you need to stay in the current directory for a later task, you can use pushd and popd:
pushd ProjectDir ; make ; popd
That goes into the ProjectDir, runs make, and goes back to where you were.
Also you may use:
make --directory /path/to/dir
make -C /path/to/dir
As noted in other answers, make(1) has a -C
option for this; several commands have similar options (e.g. tar). It is useful to note that for other commands which lack such options the following can be used:
(cd /dir/path && command-to-run)
This runs the command in a sub-shell which first has its working directory changed (while leaving the working directory of the parent shell alone). Here &&
is used instead of ;
to catch error cases where the directory can not be changed.
makefile:
all:
gcc -Wall -Wpedantic -std=gnu99 -g src/test.c -o build/test
run:
./build/test
or
run:
./../build/test
etc.