Grump - это не в стандартном исполнении; это должно быть расширение GNU. Поскольку вы говорите, Linux и Unix, неясно, какой вы хотите, но опция -C не будет работать в Solaris 10 (/ usr / ccs / bin / make), AIX (/ usr / bin / make) или HP-UX 11.23 (/ usr / bin / make). Тем не менее, 1 из 4 не так уж плохо.
Джонатан Леффлер
6
Он работает и в BSD make, так что это не просто расширение GNU.
Крис Додд
4
убедитесь, что «С» в верхнем регистре.
m.r226
101
Как отмечено в других ответах, make (1) имеет -C опцию для этого; несколько команд имеют похожие параметры (например, tar). Полезно отметить, что для других команд, у которых нет таких параметров, может использоваться следующее:
(cd /dir/path && command-to-run)
При этом команда запускается в под-оболочке, в которой сначала изменяется рабочий каталог (при этом рабочий каталог родительской оболочки остается один). Здесь && используется вместо того, ; чтобы ловить ошибки, когда каталог не может быть изменен.
Если причина, по которой вы не хотите переходить в каталог, заключается в том, что вам нужно остаться в текущем каталоге для более поздней задачи, вы можете использовать pushd и popd:
pushd ProjectDir ; make ; popd
Это входит в ProjectDir, запускает make и возвращается туда, где вы были.
Как отмечено в других ответах, make (1) имеет
-C
опцию для этого; несколько команд имеют похожие параметры (например, tar). Полезно отметить, что для других команд, у которых нет таких параметров, может использоваться следующее:При этом команда запускается в под-оболочке, в которой сначала изменяется рабочий каталог (при этом рабочий каталог родительской оболочки остается один). Здесь
&&
используется вместо того,;
чтобы ловить ошибки, когда каталог не может быть изменен.источник
Если причина, по которой вы не хотите переходить в каталог, заключается в том, что вам нужно остаться в текущем каталоге для более поздней задачи, вы можете использовать pushd и popd:
Это входит в ProjectDir, запускает make и возвращается туда, где вы были.
источник
Также вы можете использовать:
источник
Makefile:
или
и т.п.
источник