Semua atau hampir semua (dan jika anda tidak bernasib baik) kita harus menyusun program dari kod sumber. Sebenarnya, dalam kebanyakan projek, cukup untuk melakukan ./configure && make && install untuk memasang program, tetapi kita akan melihat alternatif lain:
GNU Buat
GNU Make adalah sistem penyusunan peringkat rendah, beberapa perkara dikonfigurasi dan tidak ada ujian yang dilakukan:
Kelebihan:
- Sangat meluas
- Mudah difahami
- Cepat
Cons:
- Sedikit boleh dikonfigurasi
- Sukar dijaga
- Tidak menjalankan ujian
make
Buat BSD
BSD Make adalah versi lain dari Make yang kini digunakan oleh * sistem operasi BSD. Ia berbeza dengan GNU Make, menjadi fungsi BSD Make yang paling komprehensif walaupun kurang meluas.
Kelebihan:
- Cepat
- Mudah difahami
- Lebih banyak ciri daripada GNU Make
Cons:
- Tidak meluas di dunia Linux
- Tidak menjalankan ujian
- Sedikit boleh dikonfigurasi
- Sukar dijaga
make
Autotool
Autotools adalah sistem GNU rasmi dan menghasilkan skrip yang disebut konfigurasi yang mesti kita panggil untuk menghasilkan GNU Make Makefile yang sesuai. Ia digunakan secara meluas, namun semakin banyak orang (termasuk saya) menganggapnya terlalu membebankan, sukar, lambat dan tidak begitu serasi.
Kelebihan:
- Sangat boleh dikonfigurasi
- Sangat meluas
Cons:
- Kemudahalihan kecil antara sistem Bukan UNIX
- Lakukan terlalu banyak ujian (periksa SEGALANYA, dan SEMUA adalah SEMUA)
- Sangat perlahan semasa mengatur
- Keserasian mundur lemah
./configure && make
CMake
(Sistem pilihan saya) CMake adalah sistem yang menebus kekurangan Autotools dalam banyak aspek, seperti keserasian dan mudah alih yang teruk. Juga meningkatkan sistem ujian yang sangat dikonfigurasi untuk keperluan setiap projek. Yang benar adalah bahawa semakin banyak projek menggunakan CMake seperti KDE, PortAudio, Ogre3D, dll. Kita dapat mengenali jenis sistem ini berkat fail CMakeLists.txt yang akan menghasilkan Makefile atau projek untuk Eclipse atau CodeBlocks
Kelebihan:
- Cepat
- Sokongan lintas platform yang hebat
- Anda boleh menentukan ujian dengan cara yang sangat disesuaikan
Cons:
- Sukar difahami pada mulanya
- Anda mesti bekerja dengan penolakan yang boleh menakutkan pada mulanya
- Sedikit merebak walaupun sedikit demi sedikit ia tumbuh
cmake . && make
Q Buat
QMake adalah sistem yang dirancang oleh Trolltech untuk menyusun projek yang dibuat di Qt. Dengan cara ini qmake memberi banyak penekanan pada Qt dan biasanya format yang digunakan oleh IDE seperti QtCreator. Ia cukup popular dalam projek Qt tetapi tidak terdapat di luar persekitaran ini:
Kelebihan:
- Sangat terintegrasi dengan Qt
- Cepat
- Pelbagai platform yang baik dalam Qt
Cons:
- Tidak biasa di luar aplikasi Qt
qmake . && make
SCON
SCons adalah sistem berasaskan Python untuk menyusun projek C / C ++. Tidak seperti Autotools, CMake atau QMake; SCons tidak membina Makefile. SCons sangat mudah diubah tetapi mungkin yang paling lambat dalam operasi sederhana
Kelebihan:
- Pengubahsuaian yang mudah
- Ikuti ujian yang adil
Cons:
- Sedikit penyebaran
- Perlahan
scons
Tingkatkan.Jam
Boost.Jam adalah versi Perforce Jam yang digunakan di perpustakaan C ++ Boost yang popular, walaupun sistem penyusunannya dapat digunakan secara berasingan. Tidak seperti GNU Make, Boost.Jam menggunakan Jamfiles, yang merupakan versi Makefiles yang lebih baik. Mereka cukup popular di persekitaran BeOS / Zeta / Haiku.
Kelebihan:
- Cepat
- Paling pendek untuk menulis
Cons:
- Sedikit penyebaran
- Kesukaran melaksanakan ujian
bjam
Ninja
Ninja adalah sistem yang dikembangkan oleh Google untuk menyediakan sistem binaan yang sangat pantas yang pada asalnya dirancang untuk menjadi projek Chromium. Ninja tidak dirancang untuk mudah diubah, menurut pengarangnya sendiri, sistem yang menghasilkan Ninja mesti dijumpai. Yang disyorkan adalah CMake dan gyp.
Kelebihan:
- Muy rápido
Cons:
- Anda memerlukan sistem lain untuk melahirkan Ninja
- Sedikit penyebaran
ninja
orang lain
Anda boleh menggunakan sistem lain seperti skrip bash atau python anda sendiri. Terdapat juga penjana untuk bahasa bukan asli lain yang boleh digunakan seperti Gradle, Maven, gyp, dll.
Make bukan sistem penyusunan, ia adalah penjana binari (atau sasaran) dari kod sumbernya. Ia juga boleh digunakan sebagai pelari tugas.
Saya berbeza dengan anda bahawa pembuatan BSD lebih luas dalam fungsi, pembuatan GNU lebih lengkap, ia mempunyai lebih banyak fungsi. Dan saya katakan ini dari pengalaman saya sendiri, di BSD saya selalu memasang GNU make kerana pembuatan BSD sangat mudah berbanding dengan GNU make.
Saya bersetuju dengan anda bahawa Autotools agak membebankan, saya lebih suka menggunakan Makefile. Makefiles yang dihasilkan oleh Autotools sukar untuk di-debug.
Salam!
Terima kasih atas komen!
Pada pendapat saya GNU make selalu lebih tradisional dan setia pada program make original dan BSD make selalu lebih inovatif tetapi saya mungkin melihat perkara lain ketika membuat perbandingan.
Autotools benar-benar sakit kepala yang besar. Sebagai penyumbang sistem operasi Haiku, saya terpaksa mengangkut perisian dengan autotools dan sangat sukar. Tidak ada beberapa kes yang akhirnya saya buat Makefile atau CMakeLists.txt sebelum memperbaiki kekacauan itu.
Saya kini menggunakan Premake4, sangat boleh dikonfigurasi dan ringkas berdasarkan skrip Lua. Lihatlah jika anda tidak mengetahuinya.
Selamat atas artikel, rujukan ringkas dan ringkas, sangat baik.
'make check' digunakan untuk memeriksa kompilasi setelah menggunakan make
Salam