SORU
18 AĞUSTOS 2012, CUMARTESİ


Kullanmak Ne?C Yapı Sistemleri -

C yeni bir projeye başlamadan bakıyorum kendi zamanımı başlangıçta sadece - ve mevcut yapı sistemleri araştırıyorum. Cevap görünen o ki, "Çok, ve hepsi berbat".

Ben bunun için özellikle gereken özellikleri:

  1. C 11 desteği
  2. Platform (ana hedef, ama en azından Windows da inşa etmek mümkün, Linux gibi)
  3. Düzgün destek ünitesi test
  4. Ayıran kodu için birden çok modülleri için destek
  5. Kod üretimi için (asn1c veya protobuf - 100% emin değilim henüz Kullanarak) desteği
  6. Kolay korumak için

Şimdi, bu CMake kullanarak 1-4 ve Autotools yeterince kolay yapabileceğimi biliyorum. Muhtemelen SCons ve Waf ve diğerleri de birkaç ile de. Sorun olduğunu ben hiç dışarı nasıl çalıştığını için doğru kod üretimi kullanarak onları - yani kaynak dosyaları mevcut değildir yılına kadar inşa sürecine ilk çalışma, kaynak dosyaları bu yapı sistemi gerekir dönüştürmek içine çalıştırılabilir kod ama yok aslında biliyor kadar inşa etmeye başlar... (ASN1C belirli oluşturur onlarca başlık ve kaynak dosyaları gerekir birlikte çalışmak için, ve gerçek dosyalar kümesi oluşturur bağlıdır içindekiler asn dosya) Orada da aslında bunlardan hiçbiri özellikle bakımı kolay - CMake ve Autotools kendi büyük set komut gerekir yönetmek için onlara iş ve Waf ve Scons gerektiren herkes çalışmak onlara iyi bilgi python (bilmiyorum) ile çalışmak

Yapı sistemleri böyle bir şey için ne tavsiye edilir? Veya artık dosyaları ve kabuk betikleri olun kalabilir miyim?

CEVAP
18 AĞUSTOS 2012, CUMARTESİ


1, ", ve çok korkunçlar." Birçok

Ama, "zengin" en ölçeklenebilir "muhtemelen Makefile-jeneratör olan CMake, (ayrıca 0*/*.sln*yerel MSVC oluşturur)." Garip sözdizimi, ama bir kez öğrenirsen güzel oluşturmak için izin farklı platformlar için oluşturur. Ben "muhtemelen CMake. kullanmak istiyorum"-taze başlatıldı "Nesil kod" a-life-of-onun-kendi inşa sistemine bağlı ötesi "ne yapmak istiyorsun. sürebilir rağmen listenizi işlemek gerekir (Aşağıya bakınız.)

Basit projeler için, QMake jeneratör Tamam (Qt kütüphaneleri QMake kullanmaya gerek yok). Ama, değilsin anlatan "basit" -- kod oluşturma ve "ekstra-aşama" anlamına gelir muhtemelen istiyorum CMake ya da bir şey ile zengin bir API için kendi uzantıları gibi Scons (Waf).

İş başında Scons kullanıyoruz. Ürettiği "kurşun geçirmez-inşa", ama çok yavaş. Başka hiçbir sistem Scons kurşun geçirmez gibi olacaktır. Ama, yavaş. It is written in Python ve genişletilmiş arayüzü için "çalışma alanı-organizasyon" (burada biz sadece belirtmek modül bağımlılıkları), ve bunun bir parçası Scons tasarım niyet (bu tür uzantısı ile Python). Uygun, ama yavaş oluşturur. Kurşun geçirmez yapılar olsun (herhangi bir geliştirici kutusu son sürümü yapabilirsiniz), ama yavaş. Ve, yavaş. Eğer yavaş olduğunu Scons gerçi, kullanıyorsanız unutmayın. Ve, yavaş.

Bana kötü bir on Yıl sonra 2000'de, hala uçan arabalar yok oluyor. Muhtemelen bir yüz yıl ya da bir şey beklemek zorundayız. Ve o zaman muhtemelen etrafında uçan arabalar uçan olacağızhalaberbat ile inşa edilmekte sistemleri kurmak.

Evet, korkunç.

[KOD OLUŞTURMA HAKKINDA]

Scons eserleri "aşama" ve "biraz statik". Bunu inşa kod oluşturulan bir parçası olarak oluştur (insanlar bunu bir kaç farklı şekilde), ama bu oldu açıklandığı gibi, "bir şey çok un-Scons-gibi".

Eğer basit bir "süreç öncesi bazı dosyaları oluşturmak ve kaynak dosyaları", sonra da abartılacak bir şey (size bir sürü seçenek, ve bu yüzden qmake yazılmış -- moc ön *.hpp/*.cpp dosyaları).

Eğer bunu yapıyorsanız, ancak, "ağır bir şekilde" script kendi ihtiyacın olacak. Örneğin, yaptığımız gibi-bir-parça-inşa komut, sorgulanan veritabanları ve üretilen C sınıfı için arayüz arasındaki "katmanlar" (geleneksel 3 katmanlı Uygulama Geliştirme). Benzer şekilde, oluşturulan sunucu/istemci kaynak kodu ile İDLs ve gömülü sürüm bilgileri için izin birden çok istemci/sunucu çalıştırmak için aynı anda farklı sürümleri (aynı "müşteri" veya "sunucu"). Oluşturulan kaynak bir sürü kod. Yapabiliriz "gibi" "-yap-sistem", ama gerçekten, basit olmayan bir altyapı için "konfigürasyon yönetimi" kısmını "inşa sistemi". Örneğin, bu sistem "aşağı" ve "başlangıç" bu sürecin bir parçası olarak sunucuları. zorundaydım. Benzer şekilde, regresyon testleri idam edildi bir parçası olarak bu süreç, ağır "raporlama" ve "fark-test" arasındaki sürümleri tüm bir parçası olarak bizim "yap-komut".

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • Cristina Landa

    Cristina Lan

    28 Ocak 2010
  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008