В Unix, могу ли я запустить make в каталоге, не перейдя сначала в этот каталог? - PullRequest
190 голосов
/ 17 января 2009

В Unix, могу ли я запустить make в каталоге, не перейдя сначала в этот каталог?

Ответы [ 5 ]

293 голосов
/ 17 января 2009

make -C /path/to/dir

94 голосов
/ 17 января 2009

Как отмечалось в других ответах, make (1) имеет опцию -C для этого; несколько команд имеют похожие параметры (например, tar). Полезно отметить, что для других команд, у которых нет таких параметров, может использоваться следующее:

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

Запускает команду в под-оболочке, в которой сначала изменяется рабочая папка (при этом остается только рабочая папка родительской оболочки). Здесь && используется вместо ; для обнаружения ошибок, когда каталог не может быть изменен.

19 голосов
/ 19 января 2009

Если причина, по которой вы не хотите переходить в каталог, заключается в том, что вам нужно оставаться в текущем каталоге для более поздней задачи, вы можете использовать pushd и popd:

pushd ProjectDir ; make ; popd

Это входит в ProjectDir, запускает make и возвращается туда, где вы были.

7 голосов
/ 15 сентября 2016

Также вы можете использовать:

make --directory /path/to/dir
0 голосов
/ 24 сентября 2018

Makefile:

all:
    gcc -Wall -Wpedantic -std=gnu99 -g src/test.c -o build/test

run:
    ./build/test

или

run:
    ./../build/test

и т.д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...