在Unix中,我可以在一个目录中运行'make'而不先cd到那个目录吗?

时间:2009-01-17 15:31:30

标签: linux unix makefile

在Unix中,我可以在一个目录中运行'make'而不先cd到那个目录吗?

5 个答案:

答案 0 :(得分:293)

make -C /path/to/dir

答案 1 :(得分:94)

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

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

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

答案 2 :(得分:19)

如果你不想cd到目录的原因是因为你需要留在当前目录中以便以后完成任务,你可以使用pushd和popd:

pushd ProjectDir ; make ; popd

进入ProjectDir,运行make,然后回到原来的位置。

答案 3 :(得分:7)

您也可以使用:

make --directory /path/to/dir

答案 4 :(得分:-1)

makefile:

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

run:
    ./build/test

run:
    ./../build/test