Sistem penyusunan. Di luar konfigurasi sederhana, buat, pasang

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.


4 komen, tinggalkan komen anda

Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

  1.   abimaelmartell kata

    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!

    1.    Jalan AdrianArroyo kata

      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.

  2.   Chuck daniels kata

    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.

  3.   Tulang kata

    'make check' digunakan untuk memeriksa kompilasi setelah menggunakan make
    Salam