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


Jawaban:


338

make -C /path/to/dir


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.


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.


11

Anda juga dapat menggunakan:

make --directory /path/to/dir

-3

makefile:

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

run:
    ./build/test

atau

run:
    ./../build/test

dll.


1
Jawabannya benar-benar merindukan pertanyaan - ini tentang bagaimana memohon make, bukan bagaimana menulis makefile.
Petr
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.