Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 2340|Jawab: 1

Pengantar GCC, CMake, CMakelist, Make, Makefile, dan Ninja

[Salin tautan]
Diposting pada 09/07/2024 20.44.28 | | |
1. Kelahiran GCC!

Pada tahun 1985, pada malam yang gelap ketika jari-jarinya tidak terlihat, seorang pria aneh dengan janggut, sosok pendek, dan rambut berantakan mulai menulis satu set kompiler bahasa C. Ecphony ini, yang kemudian dikenal sebagai "programmer terhebat" dan "bapak perangkat lunak bebas", adalah Richard Stallman. Setelah dua tahun bekerja keras, Richard Stallman, yang memiliki janggut yang lebih panjang dan rambut yang lebih berantakan, telah menyelesaikan versi pertama dari kompiler C, yang dia sebut GNU C Complier, yang sekarang menjadi sumber GCC yang terkenal. Kemudian, GCC berkembang pesat, dan sekarang GCC tidak hanya dapat mengkompilasi bahasa C, tetapi juga C++, Fortran, Pascal, Objective-C, Java, Ada dan bahasa lainnya. Pada tahun 80-an dan 90-an abad terakhir, frekuensi CPU, ukuran hard disk, dan ukuran memori komputer pribadi semuanya diukur dalam MB atau bahkan KB, dan jumlah file program yang perlu dikompilasi kecil, dan perintah GCC sudah cukup untuk menghadapinya.

Kedua, masalah baru telah muncul! (membuat & membuat)

Dengan peningkatan dan mempopulerkan kinerja komputer, proyek perangkat lunak berisi lebih banyak file sumber, seperti linux, yang mudah membingungkan dan berbeban kerja, yang mudah membingungkan dan terbeban kerja, yang akan membuat orang gila.

Richard Stallman dan Roland McGrath bersama-sama mengembangkan make and makefile untuk memecahkan masalah ini. Alat make dapat dilihat sebagai alat pemrosesan batch cerdas, yang tidak memiliki fungsi mengkompilasi dan menautkan, tetapi menggunakan metode yang mirip dengan pemrosesan batch - dengan memanggil perintah yang ditentukan oleh pengguna dalam file makefile. Apa itu makefile? Makefile adalah file naskah, seperti skor lagu, alat make seperti konduktor, konduktor mengarahkan seluruh orkestra untuk bermain sesuai dengan partitur, dan alat make dikompilasi dan ditautkan sesuai dengan perintah di makefile. Perintah makefile berisi perintah untuk memanggil gcc (atau kompiler lain) untuk mengkompilasi file sumber.

3. Masalah baru muncul lagi! (Cmake & CMakelist)

Makefile dapat ditulis dengan tangan di bawah beberapa proyek sederhana, tetapi ketika proyek sangat besar, juga sangat merepotkan untuk menulis makefile dengan tangan. Dan makefiles untuk platform yang berbeda telah muncul satu demi satu, termasuk GNU make, QT's qmake, Microsoft's MSnmake, BSD Make(pmake), Makepp, dll. Alat Make ini mengikuti spesifikasi dan standar yang berbeda, dan format Makefile yang mereka lakukan sangat bervariasi. Ini menimbulkan masalah serius: jika perangkat lunak ingin lintas platform, perangkat lunak harus dapat dikompilasi di platform yang berbeda. Jika Anda menggunakan alat Make di atas, Anda harus menulis makefile untuk setiap standar, yang akan menjadi pekerjaan gila, dan jika Anda mengubah platform makefile, Anda harus memodifikasinya kembali.

Jadi, saat ini, alat Cmake muncul, dan Cmake dapat menghasilkan file makefile untuk di atas membuat lebih mudah. Tentu saja, cmake juga memiliki fungsi lain, yaitu dapat menghasilkan makefiles yang dapat digunakan pada platform yang sesuai di seluruh platform, dan Anda tidak perlu memodifikasinya sendiri. cmake adalah lapisan atas Makefile, dan tujuannya adalah untuk menghasilkan makefile portabel dan menyederhanakan beban kerja yang sangat besar untuk menulis makefile sendiri. Tapi apa yang digunakan cmake untuk menghasilkan makefile? Itu juga perlu menghasilkan makefile berdasarkan file yang disebut file CMakeLists.txt (nama ilmiah: file konfigurasi). Pada akhirnya CMakeLists.txt siapa yang menulis dokumen tersebut? Tentu saja, Anda menulisnya sendiri.

Keempat, masalah baru telah muncul lagi! (Ninja)

Ketika rekayasa perangkat lunak menjadi lebih besar dan lebih kompleks, masalah kecepatan eksekusi yang lambat menjadi semakin serius.

Akibatnya, seorang programmer Google meluncurkan Ninja, alat build yang berfokus pada kecepatan. Ninja tidak memiliki semua jenis fitur canggih, sintaks dan penggunaannya sangat sederhana, dan menentukan apa yang harus dilakukan secara rinci, sehingga mulai mengkompilasi dengan sangat cepat. Menurut pengujian dunia nyata: dengan lebih dari 30.000 file sumber, dimungkinkan juga untuk memulai build nyata dalam 1 detik. Sebaliknya, Makefiles yang ditulis oleh insinyur senior juga membutuhkan waktu 10-20 detik untuk mulai membangun.

5. Akhir yang sempurna sejauh ini!

Cmake dapat menghasilkan alat .ninja dan .makefile. Karena banyak orang yang tidak terbiasa dengan cara menulis file makefile dan file ninja, cmake hanya membutuhkan deskripsi sederhana dari file kode sumber (yaitu file CMakeLists.txt) untuk secara otomatis menghasilkan file makefile proyek atau file ninja, dan kemudian mulai mengkompilasi melalui ninja atau make.


5 menit untuk memahami make/makefile/cmake/nmake

Baru-baru ini, apakah Anda dibuat oleh make, cmake, makefile... ... Hal-hal ini pusing, simak artikel berikut ini, mungkin kamu bisa mengerti dengan jelas.

1. GCC
Ini adalah Koleksi Kompiler GNU, atau hanya kompiler, yang dapat mengkompilasi banyak bahasa pemrograman (termasuk C, C++, Objective-C, Fortran, Java, dll.).

Ketika program kita hanya memiliki satu file sumber, kita dapat mengkompilasinya secara langsung dengan perintah gcc.

Tetapi bagaimana jika program kita berisi banyak file sumber? Saat mengkompilasi dengan perintah gcc satu per satu, mudah untuk bingung dan padat kerja, sehingga alat make berikut muncul.

2. Membuat
Alat make dapat dilihat sebagai alat pemrosesan batch cerdas, yang tidak memiliki fungsi mengkompilasi dan menautkan, tetapi menggunakan metode yang mirip dengan pemrosesan batch - dengan memanggil perintah yang ditentukan oleh pengguna dalam file makefile.

3. Membuat File
Apa ini?

Sederhananya, seperti skor lagu, alat make seperti konduktor, konduktor mengarahkan seluruh orkestra untuk bermain sesuai dengan skor, dan alat make mengkompilasi dan menautkan sesuai dengan perintah di makefile. Perintah makefile berisi perintah untuk memanggil gcc (atau kompiler lain) untuk mengkompilasi file sumber.

Makefile dapat diambil secara manual dalam beberapa proyek sederhana, tetapi ketika proyek sangat besar, makefile tulisan tangan juga sangat merepotkan.

4. Pembuatan
Cmake dapat dengan mudah membuat file makefile untuk Make di atas. Tentu saja, cmake memiliki fungsi lain yang lebih baik, yaitu dapat menghasilkan makefile yang dapat digunakan pada platform yang sesuai di seluruh platform, jadi kita tidak perlu memodifikasinya sendiri.

Tapi apa yang digunakan cmake untuk menghasilkan makefile? Itu juga perlu menghasilkan makefile berdasarkan file yang disebut file CMakeLists.txt (nama ilmiah: file konfigurasi).

5. CMakeList.txt
Pada akhirnya CMakeLists.txt siapa yang menulis dokumen tersebut? Sayang, itu ditulis oleh tanganmu sendiri.

6. Membuat
Apa itu nmake?

nmake adalah perintah samping di Microsoft Visual Studio, yang perlu menginstal VS, yang sebenarnya bisa dikatakan setara dengan make-up linux, mengerti?

Ditransfer dari:

Login hyperlink terlihat.
Login hyperlink terlihat.
Login hyperlink terlihat.





Mantan:ERP Kingdee Cloud Starry Sky (1) Pemahaman sederhana
Depan:Paket Rocky Linux 9 tidak ditemukan: Tidak ada kecocokan untuk argumen: xxx
 Tuan tanah| Diposting pada 08/12/2024 08.57.06 |
MinGW menyediakan lingkungan pengembangan program berbasis GCC yang sederhana dan nyaman untuk Windows. MinGW mengumpulkan koleksi file header dan perpustakaan penggunaan Windows gratis; Ini juga mengintegrasikan GNU (http://www.gnu.org/), terutama alat pengembangan GNU seperti gcc klasik, g++, make, dll. MinGW adalah perangkat lunak yang sepenuhnya gratis, yang mensimulasikan lingkungan pengembangan GCC di bawah Linux pada platform Windows, memberikan dukungan dasar yang baik untuk pengembangan lintas platform C++, dan menyediakan kondisi bagi pemrogram yang bekerja di bawah Windows untuk membiasakan diri dengan organisasi teknik C++ di bawah Linux.
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com