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.
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.
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: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.sumber
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:
Itu masuk ke ProjectDir, menjalankan make, dan kembali ke tempat Anda berada.
sumber
Anda juga dapat menggunakan:
sumber
makefile:
atau
dll.
sumber