1. GCC'nin doğuşu!
1985'te, parmakları gözden kaybolduğu karanlık bir gecede, sakallı, kısa vücutlu ve dağınık saçlı garip bir adam C dili derleyiciler yazmaya başladı. Bu efoni, daha sonra "en büyük programcı" ve "özgür yazılımın babası" olarak bilinen Richard Stallman'dı. İki yıl süren sıkı çalışmanın ardından, daha uzun sakallı ve dağınık saçlı Richard Stallman, şu anda ünlü GCC'nin kaynağı olan GNU C Complier adını verdiği C derleyicisinin ilk versiyonunu tamamladı. Daha sonra GCC hızla gelişti ve artık GCC sadece C dilini değil, aynı zamanda C++, Fortran, Pascal, Objective-C, Java, Ada ve diğer dilleri de derleyebiliyor. Geçen yüzyılın 80'leri ve 90'larında, kişisel bilgisayarların CPU frekansı, sabit disk boyutu ve bellek boyutu MB veya hatta KB ile ölçülüydü, derlenmesi gereken program dosyası sayısı azdı ve GCC komutları bununla başa çıkmak için yeterliydi.
İkincisi, yeni sorunlar ortaya çıktı! (make & makefile)
Bilgisayar performansının gelişip popülerleşmesiyle, bir yazılım projesi giderek daha fazla kaynak dosya içerir; örneğin Linux kolayca kafa karıştırıcı ve iş yüklü, kolayca karıştırılabilir ve iş yükü ile insanları çıldırtabilir.
Richard Stallman ve Roland McGrath, bu sorunu çözmek için make and makefile'ı birlikte geliştirdiler. Oluşturma aracı, derleme ve bağlama işlevi olmayan, toplu işlemeye benzer bir yöntem kullanan akıllı bir toplu işleme aracı olarak görülebilir - kullanıcı tarafından makefile dosyasında belirtilen komutları çağırarak. Makefile nedir? Makefile, bir şarkının notası gibi bir script dosyasıdır, make aracı bir şef gibidir, şef tüm orkestrayı nota göre çalmaya yönlendirir ve make aracı makefile'daki komutlara göre derlenir ve bağlanır. Makefile komutu, kaynak dosyayı derlemek için gcc (veya başka bir derleyici) çağrısı komutlarını içerir.
3. Yine yeni sorunlar ortaya çıktı! (Cmake & CMakelist)
Makefile, bazı basit projeler altında elle yazılabilir, ancak proje çok büyük olduğunda, make file'i elle yazmak da oldukça zahmetlidir. Ve farklı platformlar için ardışık olarak yapılan make file'ler ortaya çıktı; bunlar arasında GNU make, QT'nin qmake, Microsoft'un MSnmake, BSD Make(pmake), Makepp gibi dosyalar da var. Bu Make araçları farklı spesifikasyon ve standartları takip eder ve uyguladıkları Makefile formatı oldukça değişkenlik gösterir. Bu ciddi bir sorun yaratır: yazılım çapraz platform olmak istiyorsa, farklı platformlarda derlenebilmelidir. Yukarıdaki Make aracını kullanırsanız, her standart için bir makefile yazmanız gerekir, bu çılgınca bir iş olur, platformun makefile'ını değiştirirseniz onu yeniden düzenlemeniz gerekir.
Bu sırada, Cmake aracı ortaya çıktı ve Cmake yukarıdaki make file için daha kolay bir makefile dosyası oluşturabiliyordu. Tabii ki, cmake'in başka işlevleri de var; yani, platformlar arasında ilgili platformda kullanılabilecek makefile'lar oluşturabiliyor ve kendiniz değiştirmenize gerek yok. cmake, Makefile'ın üst katmanıdır ve amaçları, taşınabilir makefile üretmek ve kendi başınıza makefile yazmanın büyük iş yükünü basitleştirmektir. Peki cmake bir makefile oluşturmak için ne kullanır? Ayrıca, CMakeLists.txt dosyası (bilimsel adı: yapılandırma dosyası) adlı bir dosyaya dayalı bir makefile üretmesi gerekir. Sonunda CMakeLists.txt belgeyi kim yazıyor? Tabii ki, kendin yazdın.
Dördüncüsü, yeni sorunlar tekrar ortaya çıktı! (Ninja)
Yazılım mühendisliği büyüdükçe ve karmaşıklaştıkça, yapımın yavaş yürütme hızı sorunu giderek daha ciddi hale gelir.
Sonuç olarak, bir Google programcısı hıza odaklanan bir derleme aracı olan Ninja'yı başlattı. Ninja'nın her türlü gelişmiş özelliği yok, sözdizimi ve kullanımı çok basit, ne yapılacağını ayrıntılı olarak belirtiyor, bu yüzden çok hızlı derlemeye başlıyor. Gerçek dünya testlerine göre: 30.000'den fazla kaynak dosyasıyla gerçek bir derleme 1 saniyede başlatılabilir. Buna karşılık, kıdemli mühendisler tarafından yazılan Makefile'ların oluşturulmaya başlaması da 10-20 saniye sürüyor.
5. Şimdiye kadar mükemmel son!
Cmake, .ninja ve .makefile araçları üretebiliyor. Birçok kişi makefile dosyaları ve ninja dosyaları nasıl yazılacağını bilmediği için, cmake sadece kaynak kod dosyasının (yani CMakeLists.txt dosyanın) basit bir açıklamasına ihtiyaç duyar ki otomatik olarak bir proje makefile dosyası veya ninja dosyası oluşturup ninja veya make üzerinden derlemeye başlar.
make/makefile/cmake/nmake anlamak için 5 dakika
Son zamanlarda, make, cmake, makefile... ... Bunlar baş döndürücü, aşağıdaki makaleye bakın, belki daha net anlayabilirsiniz.
1. GCC Bu, GNU Derleyici Koleksiyonu veya sadece bir derleyicidir ve birçok programlama dilini (C, C++, Objective-C, Fortran, Java vb. dahil) derleyebiliyor.
Programımızda sadece bir kaynak dosya olduğunda, onu doğrudan gcc komutuyla derleyebiliriz.
Peki ya programımız birçok kaynak dosya içeriyorsa? Gcc komutlarıyla tek tek derlerken, kolayca kafanız karışır ve iş yoğunlaşır, bu yüzden aşağıdaki make aracı ortaya çıkar.
2. Oluşturma aracı, derleme ve bağlama işlevi olmayan, toplu işlemeye benzer bir yöntem kullanan akıllı bir toplu işleme aracı olarak görülebilir - kullanıcı tarafından makefile dosyasında belirtilen komutları çağırarak.
3. Makefile Bu nedir?
Basitçe söylemek gerekirse, tıpkı bir şarkının notası gibi, make aracı da bir şef gibidir, şef tüm orkestrayı nota göre çalmaya yönlendirir ve make aracı makefile'deki komutlara göre derler ve bağlantılar oluşturur. Makefile komutu, kaynak dosyayı derlemek için gcc (veya başka bir derleyici) çağrısı komutlarını içerir.
Makefile bazı basit projelerde manuel olarak alınabilir, ancak proje çok büyük olduğunda el yazısı dosyası da çok zahmetlidir.
4. CMAKE Cmake, yukarıdaki Make için kolayca bir Makefile dosyası oluşturabilir. Elbette, cmake'in başka daha iyi işlevleri var; yani, ilgili platformda platformlar arasında kullanılabilecek makefile'lar oluşturabiliyor, böylece kendimiz değiştirmemize gerek kalmıyor.
Peki cmake bir makefile oluşturmak için ne kullanır? Ayrıca, CMakeLists.txt dosyası (bilimsel adı: yapılandırma dosyası) adlı bir dosyaya dayalı bir makefile üretmesi gerekir.
5. CMakeList.txt Sonunda CMakeLists.txt belgeyi kim yazıyor? Sevgilim, kendi elinle yazılmış.
6. nmake nmake nedir?
nmake, Microsoft Visual Studio'da VS'yi yüklemesi gereken yan komuttur, ki bu aslında Linux'un make ile eşdeğer olduğu söylenebilir, anladın mı?
Transfer edilenler:
Bağlantı girişi görünür.
Bağlantı girişi görünür.
Bağlantı girişi görünür.
|