Otomatik yapılandırma - Autoconf

otomatik yapılandırma
Heckert GNU white.svg
Orijinal yazar(lar) David Mackenzie
Geliştirici(ler) GNU Projesi
İlk sürüm 1991
kararlı sürüm
2.71 / 28 Ocak 2021 ; 8 ay önce ( 2021-01-28 )
depo
Yazılmış Perl
İşletim sistemi Çapraz platform
Tip Programlama aracı
Lisans GNU GPL'si
İnternet sitesi www .gnu .org /software /autoconf /

GNU Autoconf , Bourne kabuğunun mevcut olduğu bilgisayar sistemlerinde yazılım oluşturmak, kurmak ve paketlemek için yapılandırma betikleri üretmek için bir araçtır .

Autoconf, kullanılan programlama dilleri konusunda agnostiktir, ancak genellikle C , C++ , Fortran , Fortran 77, Erlang veya Objective-C kullanan projeler için kullanılır .

Bir yapılandırma komut dosyası , belirli bir hedef sisteme kurulum için bir yazılım paketi yapılandırır . Hedef sistemde bir dizi test çalıştırdıktan sonra, configure betiği şablonlardan başlık dosyaları ve makefile oluşturur, böylece yazılım paketini hedef sistem için özelleştirir. Automake ve Libtool ile birlikte Autoconf , başta Autoheader olmak üzere diğer birçok aracı içeren GNU Yapı Sistemini oluşturur .

Kullanıma genel bakış

autoconf ve automake'in akış şeması . autoconf'un ilk sürümlerinde "configure.ac" dosyasının "configure.in" olarak adlandırıldığını unutmayın.

Geliştirici, "configure.ac" adlı bir dosyaya GNU m4 dilinde bir talimat listesi yazarak configure betiğinin istenen davranışını belirler . Ortak yapılandırma komut dosyası talimatlarını açıklamak için önceden tanımlanmış m4 makrolarından oluşan bir kitaplık mevcuttur. Autoconf, "configure.ac" içindeki talimatları taşınabilir bir yapılandırma komut dosyasına dönüştürür. Binayı yapacak olan sistemde autoconf'un kurulu olması gerekmez: autoconf yalnızca, genellikle yazılımla birlikte verilen yapılandırma komut dosyasını oluşturmak için gereklidir.

Tarih

Autoconf, 1991 yazında David Mackenzie tarafından Özgür Yazılım Vakfı'ndaki çalışmalarını desteklemek için başlatıldı . Sonraki yıllarda, çeşitli yazarların geliştirmelerini içerecek şekilde büyüdü ve taşınabilir ücretsiz veya açık kaynaklı yazılım yazmak için en yaygın kullanılan yapı yapılandırma sistemi haline geldi .

Yaklaşmak

Autoconf, Perl tarafından kullanılan Metaconfig paketine benzer . Daha önce X Pencere Sistemi (X11R6.9'a kadar) tarafından kullanılan imake sistemi yakından ilişkilidir, ancak farklı bir felsefesi vardır.

Taşınabilirliğe yönelik Autoconf yaklaşımı , sürümler için değil özellikleri test etmektir . Örneğin, SunOS 4'teki yerel C derleyicisi ISO C'yi desteklemiyordu . Ancak, kullanıcı veya yöneticinin ISO C uyumlu bir derleyici kurmuş olması mümkündür. Saf sürüm tabanlı bir yaklaşım, ISO C derleyicisinin varlığını tespit edemez, ancak bir özellik testi yaklaşımı, kullanıcının kurduğu ISO C derleyicisini keşfedebilir. Bu yaklaşımın mantığı aşağıdaki avantajları elde etmektir:

  • config betiği daha yeni veya bilinmeyen sistemlerde makul sonuçlar alabilir
  • yöneticilerin makinelerini özelleştirmesine ve yapılandırma komut dosyasının özelleştirmelerden yararlanmasına olanak tanır
  • Belirli bir özelliğin desteklenip desteklenmediğini anlamak için sürümlerin, yama numaralarının vb. küçük ayrıntılarını takip etmeye gerek yoktur.

Autoconf, birçok POSIX kabuk yapısının daha eski kabuklara ve buradaki hatalara taşınabilirliği konusunda kapsamlı belgeler sağlar. Ayrıca, kabuk sözdizimi için makro tabanlı bir yedek olan M4SH'yi sağlar.

eleştiri

Autoconf'un eski teknolojiler kullandığını, birçok eski kısıtlamaya sahip olduğunu ve configure.ac komut dosyalarının yazarı için gereksiz yere basit senaryoları karmaşıklaştırdığını belirten bazı eleştiriler var . Özellikle, Autoconf'un sıklıkla belirtilen zayıf noktaları şunlardır:

  • Kullanılan mimarinin genel karmaşıklığı, çoğu proje birden fazla tekrar kullanır.
  • Oluşturulan 'configure' Bourne kabuğunda yazılmıştır ve bu nedenle Makefile üretimi yavaştır.
  • Bazı insanlar, autoconf tarafından oluşturulan 'yapılandırma' komut dosyalarının herhangi bir standardizasyon olmaksızın yalnızca manuel olarak yönetilen komut satırı arabirimi sağladığını düşünüyor. Bazı geliştiricilerin ortak sözleşmelere saygı duymadığı doğru olsa da, bu tür sözleşmeler mevcuttur ve yaygın olarak kullanılmaktadır.
  • M4 alışılmadık ve pek çok geliştirici tarafından bilinmiyor. Geliştiricilerin, standart olmayan kontrollerle autoconf'u genişletmeyi öğrenmesi gerekecek.
  • Zayıf geriye ve ileriye uyumluluk, bir sarmalayıcı komut dosyası gerektirir.
  • Autoconf tarafından oluşturulan komut dosyaları genellikle büyük ve oldukça karmaşıktır. Kapsamlı günlük kaydı oluşturmalarına rağmen, bunların hatalarını ayıklamak yine de zor olabilir.

Bu sınırlamalar nedeniyle, GNU Yapı Sistemini kullanan birkaç proje, CMake ve SCons gibi farklı yapı sistemlerine geçti .

Ayrıca bakınız

Referanslar

Dış bağlantılar