web-dev-qa-db-fra.com

Sous Unix, puis-je lancer «make» dans un répertoire sans d'abord y accéder?

Sous Unix, puis-je lancer "make" dans un répertoire sans d'abord y accéder?

195
user46795

make -C /path/to/dir

304
bmotmans

Comme indiqué dans d'autres réponses, make (1) a un -C option pour cela; plusieurs commandes ont des options similaires (par exemple, tar). Il est utile de noter que pour d'autres commandes ne disposant pas de telles options, les suivantes peuvent être utilisées:

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

Ceci exécute la commande dans un sous-shell dont le répertoire de travail a d'abord été modifié (tout en laissant le répertoire de travail du shell parent seul). Ici && est utilisé à la place de ; pour intercepter les cas d'erreur dans lesquels le répertoire ne peut pas être modifié.

94
Dave C

Si la raison pour laquelle vous ne souhaitez pas utiliser un répertoire est parce que vous devez rester dans le répertoire actuel pour une tâche ultérieure, vous pouvez utiliser pushd et popd:

pushd ProjectDir ; make ; popd

Cela entre dans le ProjectDir, les courses make et retourne à l’endroit où vous étiez.

20
EnigmaCurry

Aussi, vous pouvez utiliser:

make --directory /path/to/dir
9
korst1k