在Unix中,我可以运行'make'在一个没有cd'ing到那个目录先?

在Unix中,我可以在一个目录中运行make而不需要__abc1首先到该目录吗?

83108 次浏览

make -C /path/to/dir

正如在其他答案中提到的,make(1)对此有-C选项;有几个命令有类似的选项(例如tar)。值得注意的是,对于其他缺乏此类选项的命令,可以使用以下命令:

(cd /dir/path && command-to-run)

这将在子shell中运行命令,该子shell首先更改了它的工作目录(同时保留父shell的工作目录)。这里使用&&代替;来捕捉目录不能更改的错误情况。

如果你不想cd到一个目录的原因是你需要在当前目录中进行后面的任务,你可以使用pushd和popd:

pushd ProjectDir ; make ; popd

它会进入ProjectDir,运行make,然后回到你所在的地方。

你还可以用:

make --directory /path/to/dir

makefile:

all:
gcc -Wall -Wpedantic -std=gnu99 -g src/test.c -o build/test


run:
./build/test

run:
./../build/test

等。