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.
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!
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.
Ş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.
make'i kullandıktan sonra derlemeyi kontrol etmek için 'make check' kullanılır
Selamlar