Di Unix, bisakah saya menjalankan 'make' di direktori tanpa cd'ing ke direktori itu terlebih dahulu?

210

Di Unix, bisakah saya menjalankan makedirektori tanpa cdterlebih dahulu ke direktori itu?

pengguna46795
sumber

Jawaban:

338

make -C /path/to/dir

bmotmans
sumber
8
Grump - itu tidak standar make; itu harus ekstensi GNU. Karena Anda mengatakan Linux dan Unix, tidak jelas yang Anda inginkan, tetapi opsi -C tidak akan berfungsi pada Solaris 10 (/ usr / ccs / bin / make), AIX (/ usr / bin / make), atau HP-UX 11.23 (/ usr / bin / make). Namun, 1 dari 4 tidak terlalu buruk.
Jonathan Leffler
6
Ia bekerja di BSD juga, jadi bukan hanya ekstensi GNU.
Chris Dodd
4
pastikan 'C' dalam huruf besar.
m.r226
101

Seperti disebutkan dalam jawaban lain, membuat (1) memiliki -C opsi untuk ini; beberapa perintah memiliki opsi serupa (misalnya tar). Penting untuk dicatat bahwa untuk perintah lain yang tidak memiliki opsi seperti berikut ini dapat digunakan:

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

Ini menjalankan perintah dalam sub-shell yang pertama kali direktori kerjanya berubah (sambil meninggalkan direktori kerja dari shell induk sendiri). Di sini && digunakan alih-alih ; untuk menangkap kasus kesalahan di mana direktori tidak dapat diubah.

Dave C
sumber
22

Jika alasan Anda tidak ingin melakukan cd ke direktori adalah karena Anda perlu tetap berada di direktori saat ini untuk tugas selanjutnya, Anda dapat menggunakan pushd dan popd:

pushd ProjectDir ; make ; popd

Itu masuk ke ProjectDir, menjalankan make, dan kembali ke tempat Anda berada.

EnigmaCurry
sumber
11

Anda juga dapat menggunakan:

make --directory /path/to/dir
korst1k
sumber
-3

makefile:

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

run:
    ./build/test

atau

run:
    ./../build/test

dll.

oldpilsbury
sumber
1
Jawabannya benar-benar merindukan pertanyaan - ini tentang bagaimana memohon make, bukan bagaimana menulis makefile.
Petr