【发布时间】:2010-10-01 23:49:48
【问题描述】:
在 Unix 中,我可以在一个目录中运行 make 而不先将 cd'ing 到该目录吗?
【问题讨论】:
在 Unix 中,我可以在一个目录中运行 make 而不先将 cd'ing 到该目录吗?
【问题讨论】:
make -C /path/to/dir
【讨论】:
--directory= 也一样。
如其他答案所述,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
【讨论】:
制作文件:
all:
gcc -Wall -Wpedantic -std=gnu99 -g src/test.c -o build/test
run:
./build/test
或
run:
./../build/test
等等
【讨论】: