Unixでは、最初にそのディレクトリにcdせずにディレクトリで「make」を実行できますか?


回答:


338

make -C /path/to/dir


8
Grump-それは標準的なmakeにはありません。これはGNU拡張である必要があります。LinuxとUnixを言っているので、どちらが必要かは明確ではありませんが、-CオプションはSolaris 10(/ usr / ccs / bin / make)、AIX(/ usr / bin / make)、またはHP-UX 11.23(/ usr / bin / make)。それでも、4分の1は悪くないです。
Jonathan Leffler、

6
BSD makeでも機能するため、単なるGNU拡張ではありません。
Chris Dodd 2013年

4
「C」が大文字であることを確認してください。
m.r226 2016

100

他の回答で述べたように、make(1)には-C このオプションがあります。いくつかのコマンドには同様のオプションがあります(たとえばtar)。このようなオプションがない他のコマンドについては、以下を使用できることに注意してください。

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

これは、最初に作業ディレクトリが変更されたサブシェルでコマンドを実行します(親シェルの作業ディレクトリはそのままにします)。ここで&&; 、ディレクトリを変更できないエラーケースをキャッチする代わりに使用されます。


22

ディレクトリにcdしたくない理由が、後のタスクのために現在のディレクトリにとどまる必要があるためである場合は、pushdとpopdを使用できます。

pushd ProjectDir ; make ; popd

それがProjectDirに入り、makeが実行され、元の場所に戻ります。


11

また、以下を使用することもできます。

make --directory /path/to/dir

-3

makefile:

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

run:
    ./build/test

または

run:
    ./../build/test


1
答えは完全に質問を逃しました-それはメイクファイルを書く方法ではなく、メイクを呼び出す方法についてです。
Petr
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.