Grump - qui n'est pas de marque standard; ce doit être une extension GNU. Puisque vous dites Linux et Unix, vous ne savez pas exactement ce que vous voulez, mais l'option -C ne fonctionnera pas sur Solaris 10 (/ usr / ccs / bin / make), AIX (/ usr / bin / make) ou HP-UX 11.23 (/ usr / bin / make). Pourtant, 1 sur 4 n'est pas trop mal.
Jonathan Leffler
6
Il fonctionne également dans BSD, donc ce n'est pas seulement une extension GNU.
Chris Dodd
4
assurez-vous que «C» est en majuscules.
m.r226
101
Comme indiqué dans d'autres réponses, make (1) a une -C option pour cela; plusieurs commandes ont des options similaires (par exemple tar). Il est utile de noter que pour d'autres commandes qui manquent de telles options, les éléments suivants peuvent être utilisés:
(cd /dir/path && command-to-run)
Cela 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é au lieu de ; pour détecter les cas d'erreur où le répertoire ne peut pas être modifié.
Si la raison pour laquelle vous ne voulez pas cd dans un répertoire est parce que vous devez rester dans le répertoire en cours pour une tâche ultérieure, vous pouvez utiliser pushd et popd:
pushd ProjectDir ; make ; popd
Cela va dans le ProjectDir, exécute make et revient là où vous étiez.
Comme indiqué dans d'autres réponses, make (1) a une
-C
option pour cela; plusieurs commandes ont des options similaires (par exemple tar). Il est utile de noter que pour d'autres commandes qui manquent de telles options, les éléments suivants peuvent être utilisés:Cela 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é au lieu de;
pour détecter les cas d'erreur où le répertoire ne peut pas être modifié.la source
Si la raison pour laquelle vous ne voulez pas cd dans un répertoire est parce que vous devez rester dans le répertoire en cours pour une tâche ultérieure, vous pouvez utiliser pushd et popd:
Cela va dans le ProjectDir, exécute make et revient là où vous étiez.
la source
Vous pouvez également utiliser:
la source
makefile:
ou
etc.
la source