在Unix中,我可以在一个目录中运行'make'而不先cd到那个目录吗?
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