Derleme sistemleri. Basit yapılandırmanın ötesinde, oluşturun, kurun

Hepsi veya neredeyse tamamı (ve eğer şanslı değilseniz) kaynak kodundan bir program derlemek zorunda kaldık. Aslında, çoğu projede programı kurmak için bir ./configure && make && make install yeterlidir, ancak farklı alternatifleri göreceğiz:

GNU Yap

GNU Make düşük seviyeli bir derleme sistemidir, birkaç şey yapılandırılır ve test yapılmaz:

Artıları:

  • Çok yaygın
  • Anlaması basit
  • Hızlı

Eksileri:

  • Küçük yapılandırılabilir
  • Bakımı zor
  • Test yapmaz

make

BSD Yap

BSD Make, şu anda * BSD işletim sistemleri tarafından kullanılan başka bir Make sürümüdür. Daha az yaygın olmasına rağmen, işlevsellik açısından en kapsamlı BSD Make olan GNU Make'den farklıdır.

Artıları:

  • Hızlı
  • Anlaması basit
  • GNU Make'den daha fazla özellik

Eksileri:

  • Linux dünyasında yaygın değil
  • Test yapmaz
  • Küçük yapılandırılabilir
  • Bakımı zor

make

Otomatik araçlar

Autotools, resmi GNU sistemidir ve uygun GNU Make Makefile'ı oluşturmak için çağırmamız gereken configure adında bir komut dosyası oluşturur. Yaygın olarak kullanılıyor, ancak giderek daha fazla insan (ben de dahil) çok hantal, zor, yavaş ve çok uyumlu olmadığını düşünüyor.

Artıları:

  • Son derece yapılandırılabilir
  • Çok yaygın

Eksileri:

  • UNIX olmayan sistemler arasında küçük taşınabilirlik
  • Çok fazla test yapın (HER ŞEYİ kontrol edin ve HER ŞEY HER ŞEYDİR)
  • Ayarlarken çok yavaş
  • Zayıf geriye dönük uyumluluk

./configure && make

CMake

(Tercih ettiğim sistem) CMake, Autotools'un birçok yönden, korkunç geriye dönük uyumluluk ve taşınabilirlik gibi eksikliklerini gideren bir sistemdir. Ayrıca, her projenin ihtiyaçlarına göre oldukça yapılandırılabilir test sistemini iyileştirir. Gerçek şu ki, KDE, PortAudio, Ogre3D, vb. Gibi daha fazla proje CMake kullanıyor. Bu tür bir sistemi Makefile veya Eclipse veya CodeBlocks için bir proje oluşturacak bir CMakeLists.txt dosyası sayesinde tanıyabiliriz.

Artıları:

  • Hızlı
  • Harika çapraz platform desteği
  • Testleri çok özelleştirilebilir bir şekilde tanımlayabilirsiniz

Eksileri:

  • İlk başta anlamak zor
  • İlk başta korkutucu olabilecek bir soyutlama ile çalışmalısınız
  • Az yayılmış olsa da yavaş yavaş büyüyor

cmake . && make

Q Yap

QMake, Trolltech tarafından Qt'de yapılan projeleri derlemek için tasarlanmış bir sistemdir. Bu şekilde qmake, Qt'ye çok önem verir ve genellikle QtCreator gibi IDE'ler tarafından kullanılan formattır. Qt projelerinde oldukça popülerdir ancak bu ortamın dışında bulunmaz:

Artıları:

  • Qt ile çok iyi entegre
  • Hızlı
  • Qt içinde iyi çoklu platform

Eksileri:

  • Qt uygulamalarının dışında yaygın değil

qmake . && make

SCon'lar

SCons, C / C ++ projelerini derlemek için Python tabanlı bir sistemdir. Autotools, CMake veya QMake'in aksine; SCons bir Makefile oluşturmaz. SCons çok değiştirilebilir ancak basit işlemlerde belki de en yavaş olanıdır
Artıları:

  • Kolay değişiklik
  • Adil testleri yapın

Eksileri:

  • Küçük yayılma
  • Yavaş

scons

Arttırıcı Sıkışma

Boost.Jam, derleme sistemi ayrı olarak kullanılabilmesine rağmen, popüler C ++ Boost kitaplıklarında kullanılan bir Perforce Jam sürümüdür. GNU Make'den farklı olarak Boost.Jam, Makefiles'ın geliştirilmiş bir sürümü olan Jamfiles'ı kullanır. BeOS / Zeta / Haiku ortamında oldukça popülerdirler.

Artıları:

  • Hızlı
  • Yazması en kısa

Eksileri:

  • Küçük yayılma
  • Test yapmada zorluk

bjam

Ninja

Ninja, orijinal olarak Chromium projesine ait olacak şekilde tasarlanmış ultra hızlı bir yapı sistemi sağlamak için Google tarafından geliştirilen bir sistemdir. Ninja, kendi yazarlarına göre değiştirilmesi kolay olacak şekilde tasarlanmamıştır, Ninja üreten bir sistem bulunmalıdır. CMake ve gyp önerilir.

Artıları:

  • Muy rápido

Eksileri:

  • Ninja oluşturmak için başka bir sisteme ihtiyacınız var
  • Küçük yayılma

ninja

diğerleri

Kendi bash veya python betiğiniz gibi başka herhangi bir sistemi kullanabilirsiniz. Gradle, Maven, gyp, vb. Gibi kullanılabilecek diğer anadil olmayan diller için de üreteçler vardır.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Abimaelmartell dijo

    Make bir derleme sistemi değildir, kaynak kodundan gelen ikili dosyaların (veya hedeflerin) oluşturucusudur. Aynı zamanda bir görev koşucusu olarak da kullanılabilir.

    BSD yapısının işlevsellik açısından daha geniş, GNU yapımı daha eksiksiz, daha fazla işlevselliğe sahip olduğu konusunda sizinle farklılaşıyorum. Bunu kendi deneyimlerime dayanarak söylüyorum, BSD'de her zaman GNU make'i kurmam gerekiyor çünkü BSD make, GNU make'e kıyasla çok basit.

    Autotools'un oldukça hantal olduğu konusunda size katılıyorum, sadece Makefile'ı kullanmayı tercih ediyorum. Autotools tarafından oluşturulan Makefile'larda hata ayıklamak zordur.

    Selamlar!

    1.    AdrianArroyoSokak dijo

      Yorum için teşekkürler!
      Kanımca GNU make her zaman daha geleneksel ve orijinal yapım programına sadık olmuştur ve BSD make her zaman daha yenilikçi olmuştur, ancak karşılaştırma yaparken başka şeyler de fark etmiş olabilirim.

      Otomatik aletler gerçekten büyük bir baş ağrısıdır. Haiku işletim sistemine katkıda bulunan bir kişi olarak yazılımı autotools ile taşımak zorunda kaldım ve cehennem gibi. Bu karmaşayı düzeltmeden önce Makefile veya CMakeLists.txt dosyasını oluşturduğum birkaç durum yok.

  2.   Chuck daniels dijo

    Şu anda Lua betiklerine dayalı çok yapılandırılabilir ve basit Premake4 kullanıyorum. Bilmiyorsan bir bak.
    Makale için tebrikler, basit ve özlü, mükemmel referans.

  3.   kemikler dijo

    make'i kullandıktan sonra derlemeyi kontrol etmek için 'make check' kullanılır
    Selamlar