Artikel ini membawakan anda alat pembinaan projek automatik dalam Linux Dalam kehidupan sebenar, kami selalunya tidak boleh bergantung semata-mata pada kod fail untuk mengendalikan fungsi tertentu Ia memerlukan gabungan berbilang bahagian yang berbeza perlu membina projek dan pakej dan menggabungkan semua modul untuk mencapai fungsi akhir. Semoga ia membantu semua orang.
Makefile ialah fail teks yang merekodkan proses peraturan binaan projek. Sama ada anda boleh menulis makefiles di tempat kerja menunjukkan dari satu pihak sama ada seseorang itu mempunyai keupayaan untuk menyelesaikan projek berskala besar Pada masa yang sama, fail sumber dalam projek tidak dikira dalam beberapa direktori mengikut jenis , fungsi, dan modul. Makefile Satu siri peraturan ditakrifkan untuk menentukan fail mana yang perlu disusun dahulu, fail mana yang perlu dikompilasi kemudian, fail mana yang perlu disusun semula, dan operasi fungsi yang lebih kompleks boleh dilakukan ia membawa ialah - "penyusunan automatik". Setelah ditulis, hanya satu arahan buat diperlukan, dan keseluruhan projek secara automatik disusun
dan diterjemahkan, yang meningkatkan kecekapan pembangunan perisian.
make ialah alat arahan yang mentafsir arahan dalam fail make Secara umumnya, kebanyakan IDE mempunyai arahan ini, seperti: Delphi's make, Visual C nmake, GNU make di bawah Linux. Dapat dilihat bahawa makefile telah menjadi
kaedah penyusunan dalam kejuruteraan. Make ialah arahan, dan makefile ialah fail. Mereka digunakan bersama untuk menyelesaikan pembinaan automatik projek.
Dalam Makefile, kebergantungan antara pelbagai fail akan terbentuk Contohnya, code.exe dijana melalui pautan berdasarkan code.o, dan code.o ialah It dibentuk melalui pemasangan berdasarkan kod.s Kod.s dijana berdasarkan kod.i didapati lapisan demi lapisan. Peraturannya menggunakan kaedah imbas kembali, menganggap fail pertama sebagai fail terakhir yang lengkap Jika fail semasa tidak dijana, ia akan dibuat lapisan demi lapisan melalui kebergantungan dan kaedah penjanaan bersama, dan akhirnya melengkapkan pembentukan semua fail.
Pergantungan
A:B A bergantung kepada B
Kaedah pergantungan
Pilihan gcc B -o A A ialah fail yang dijana oleh B selepas memproses
Pembersihan projek
Projek diperlukan Yang sedang dibersihkan, seperti bersih, tidak dikaitkan secara langsung atau tidak langsung dengan fail sasaran pertama, maka arahan yang ditakrifkan selepas ia tidak akan dilaksanakan secara automatik Walau bagaimanapun, kita boleh memaparkan arahan yang akan dilaksanakan oleh make. Iaitu, arahan - "make clean" digunakan untuk mengosongkan semua fail sasaran untuk penyusunan semula. Tetapi secara amnya untuk fail sasaran bersih kami, kami menetapkannya sebagai sasaran pseudo dan mengubah suainya dengan .PHONY Ciri sasaran pseudo ialah ia sentiasa dilaksanakan oleh
.
Prinsip
make akan mencari fail bernama "Makefile" atau "makefile" dalam direktori semasa.
Jika ditemui, ia akan mencari fail pertama dalam kandungan fail dan menggunakan fail ini sebagai fail sasaran akhir.
Jika fail tidak wujud pada masa ini, atau masa pengubahsuaian fail bergantung fail adalah lebih baharu daripada fail semasa, maka ia akan melaksanakan perintah yang ditentukan kemudian untuk menjana fail semasa.
Jika fail bergantung fail tidak wujud, kemudian teruskan ke langkah 2 dan 3 untuk fail bergantung ini sehingga fail sumber akhir ditemui
Sudah tentu, fail C dan fail H anda wujud, jadi make akan menjana fail .o, dan kemudian gunakan fail .o untuk mengisytiharkan tugas muktamad buat, iaitu melaksanakan fail.
Ini ialah kebergantungan keseluruhan make akan mencari kebergantungan fail lapisan demi lapisan sehingga fail sasaran pertama akhirnya disusun.
Semasa proses carian, jika ralat berlaku, contohnya, fail bergantung terakhir tidak dapat ditemui, maka make akan keluar terus dan melaporkan ralat Untuk ralat dalam arahan yang ditentukan, atau kompilasi tidak akan berjaya. , buat abaikan sama sekali.
buat hanya mengambil berat tentang kebergantungan fail, iaitu, jika fail selepas bertindih masih tiada selepas saya menjumpai kebergantungan, maka saya minta maaf, saya tidak akan berfungsi.
make hanya akan mencari objek sasaran pertama dalam Makefile untuk generasi setiap kali, dan ia akan keluar selepas generasi (objek kedua tidak akan dijana)
.PHONY: clean
jelas:
rm -rf $(obj)
[Tambahan]
1 ^], [ $
$@: mewakili objek sasaran
$^: mewakili semua objek bergantung
&<: menunjukkan>
2 pertama objek bergantung $ (wildcard ./.c) Mendapatkan nama fail semua fail yang berakhir dengan .c dalam direktori semasa [Contoh] src=$(. kod wildcard ./.c): $ (str)
3 $ (patsubst %.c, %.o,$(str)) bermaksud menggantikan fail .c dalam pembolehubah str dengan .o, dan kemudian Disimpan dalam pembolehubah obj.
4. Objek Pseudo: Isytiharkan bahawa objek sasaran tiada kaitan dengan fail luaran, yang bermaksud bahawa objek ini mesti dijana semula setiap masa tanpa mengira sama ada ia adalah terkini, dan tidak kira sama ada dunia luar boleh wujud , pernyataan mesti dilaksanakan setiap kali [.PHONY:]
5. Proses penyusunan program: secara amnya merangkumi prapemprosesan, penyusunan, pemasangan, dan penyambungan, tetapi dalam pembinaan projek sebenar, ia dibahagikan kepada dua langkah, iaitu penyusunan dan penyambungan. Kelebihan ini ialah jika anda hanya mengubah suai satu fail .c, berbanding proses sebelumnya untuk menyusun semua fail .c secara langsung untuk menjana program boleh laku, anda perlu menyusun semula semua fail .c untuk menjana program boleh laku, yang sangat tidak cekap. , jadi operasi dibahagikan kepada dua langkah Pertama, setiap .c menjana .onya sendiri, dan kemudian memautkan semua .o bersama-sama Setelah .c berubah, hanya .c ini perlu dijana modul yang ditetapkan dalam program.
Contoh 1. Cipta fail Make umum
Contoh 2. Gunakan Makefiles yang dipratentukan
Cadangan berkaitan: "Tutorial Video Linux"
Atas ialah kandungan terperinci Membawa anda untuk menguasai alat pembinaan automatik projek Linux Makefile make. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!