239

在 Unix 中,我可以make在一个目录中运行而无需cd先进入该目录吗?

4

5 回答 5

381

make -C /path/to/dir

于 2009-01-17T15:33:52.877 回答
104

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

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

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

于 2009-01-17T15:44:49.377 回答
23

如果您不想 cd 到某个目录的原因是因为您需要留在当前目录中以执行以后的任务,则可以使用 pushd 和 popd:

pushd ProjectDir ; make ; popd

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

于 2009-01-19T05:25:56.233 回答
11

您也可以使用:

make --directory /path/to/dir
于 2016-09-15T10:24:00.093 回答
-4

生成文件:

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

run:
    ./build/test

或者

run:
    ./../build/test

等等

于 2018-09-23T22:56:33.997 回答