Saya memiliki tiga file: program.c
, program.h
dan headers.h
.
program.c
termasuk program.h
dan headers.h
.
Saya perlu mengkompilasi ini di Linux menggunakan kompiler gcc . Saya tidak yakin bagaimana melakukan ini. Netbeans membuatkan untuk saya, tapi itu kosong.
Jawaban:
Menarik, saya tidak tahu make default menggunakan kompiler C yang diberikan aturan tentang file sumber.
Bagaimanapun, solusi sederhana yang menunjukkan konsep Makefile sederhana adalah:
(ingatlah bahwa membuat memerlukan tab alih-alih lekukan ruang, jadi pastikan untuk memperbaikinya saat menyalin)
Namun, untuk mendukung lebih banyak file C, Anda harus membuat aturan baru untuk masing-masing file tersebut. Jadi, untuk meningkatkan:
Saya mencoba membuat ini sesederhana mungkin dengan menghilangkan variabel seperti $ (CC) dan $ (CFLAGS) yang biasanya terlihat di makefiles. Jika Anda tertarik untuk mencari tahu, saya harap saya sudah memberi Anda awal yang baik untuk itu.
Inilah Makefile yang saya suka gunakan untuk sumber C. Jangan ragu untuk menggunakannya:
Ia menggunakan fitur wildcard dan patsubst dari make utility untuk secara otomatis memasukkan file .c dan .h dalam direktori saat ini, artinya ketika Anda menambahkan file kode baru ke direktori Anda, Anda tidak perlu memperbarui Makefile. Namun, jika Anda ingin mengubah nama executable, libraries, atau flag compiler yang dihasilkan, Anda bisa memodifikasi variabel.
Dalam kedua kasus, tolong jangan gunakan autoconf. Aku memohon Anda! :)
sumber
.PHONY: clean all default
untuk target-target yang dimaksudkan untuk digunakan dari baris perintah. Juga, Autoconf / Automake tidak seburuk itu. Tentu, mereka merasa tidak enak, dan membiasakan diri dengan mereka sama menyenangkannya dengan memaksa kepala Anda melalui dinding bata, tetapi mereka berhasil, dan mereka berkembang dengan baik, dan mereka akan mencakup sebagian besar pangkalan Anda sejauh portabilitas, dan akan membuat hidup Anda jauh lebih mudah pada akhirnya setelah Anda terbiasa dengan desain mereka yang buruk.rm
: stackoverflow.com/questions/2989465/rm-rf-versus-rm-rfMisalnya Makefile sederhana ini sudah cukup:
Perhatikan harus ada
<tab>
di baris berikutnya setelah bersih dan berjalan, bukan spasi.UPDATE Komentar di bawah ini berlaku
sumber
make
tanpa argumen biasanya hanya membangun perangkat lunak Anda. Untuk menjalankannya, gunakanmake run
(tersedia dalam jawaban ini, tetapi tidak harus dalam semuaMakefile
s), atau jalankan langsung:./program
cukup. sisanya tersirat
sumber
.c
file, hanyaprogram:
diperlukan. Manis :)File make yang paling sederhana bisa
sumber
Bergantung pada jumlah tajuk dan kebiasaan pengembangan Anda, Anda mungkin ingin menyelidiki gccmakedep. Program ini memeriksa direktori Anda saat ini dan menambahkan ke akhir makefile dependensi header untuk setiap file .c / cpp. Ini berlebihan jika Anda memiliki 2 header dan satu file program. Namun, jika Anda memiliki 5+ program pengujian kecil dan Anda mengedit satu dari 10 header, Anda kemudian dapat mempercayai untuk membangun kembali program-program yang diubah oleh modifikasi Anda.
sumber