SORU
9 EYLÜL 2009, ÇARŞAMBA


C kitaplık için dizin yapısı

C bir kütüphane üzerinde çalışıyorum. Sonuçta, birden çok platformda (en azından Linux, Windows) için kamuya açık hale getirmek için bazı örnekler Python bağları ile birlikte istiyorum. Çalışma güzel ilerliyor ama şu anda bu proje oldukça dağınık, sadece Visual C ve inşa ve platform çok değil.

Bu nedenle, bir temizleme sırada olduğunu hissediyorum. Geliştirmek istiyorum ilk şey proje dizin yapısı. Automake araçları farklı platformlarda kolay derleme izin vermek için uygun bir yapı oluşturmak istiyorum, ama bunları daha önce hiç kullanmadım. Hala (en) kodlama Visual Studio yapıyor olacak beri, bir yerlerde Visual Studio proje ve çözüm dosyaları tutmak gerekiyor.

Gibi terimleri Google'da araştırdım "C kütüphanesi dizin yapısı", ama yararlı bir şey gibi. Çok temel bazı kurallar buldum, ama kristal berraklığında çözümler.

Bazı açık kaynak kütüphaneler bakarken, ben aşağıdaki ile geldi:

\mylib
    \mylib <source files, read somewhere to avoid 'src' directory>
        \include? or just mix .cpp and .h
    \bin <compiled examples, where to put the sources?>
    \python <Python bindings stuff>
    \lib <compiled library>
    \projects <VC   project files, .sln goes in project root?>
    \include? 
    README
    AUTHORS
    ...

Multi-platform/açık kaynak projeleri ile/az önceki deneyimim var ve böyle bir proje yapısı hakkında herhangi bir iyi bir tavsiye bulamıyorum çok şaşırdım oldukça.

Nasıl bir genellikle böyle bir kütüphane projesi yapı gerekir? Okumak için tavsiye ne cevap verecek? Bazı iyi örnekler var mı?

CEVAP
9 EYLÜL 2009, ÇARŞAMBA


Unıx kütüphaneler arasında çok yaygın olan bir şey bu, iyi organize edilmiş olmasıdır:

./         Makefile and configure scripts.
./src      General sources
./include  Header files that expose the public interface and are to be installed
./lib      Library build directory
./bin      Tools build directory
./tools    Tools sources
./test     Test suites that should be run during a `make test`

Biraz /usr * * * * altında: geleneksel Unıx dosya sistemini yansıtır

/usr/src      Sometimes contains sources for installed programs
/usr/include  Default include directory
/usr/lib      Standard library install path
/usr/share/projectname   Contains files specific to the project.

Tabii ki, bu /usr/local sona erebilir varsayılan GNU autoconf için önek install (), ve bu yapı için hiç de uygun olmayabilir.

Sert ve hızlı kural yok. Ben şahsen böyle düzenlemiyoruz. (./src/ bir dizini kullanarak büyük projeler hariç kaçının, örneğin. Ben de autotools, yerine CMake tercih kullanmayın.)

Size önerim bir dizin düzeni seçmelisinizanlayışınız için yapar(ve ekibi). Seçilmiş geliştirme ortamı, yapı araçları ve kaynak kontrolü sizin için en mantıklı neyse onu yapın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ciaran Blumenfeld

    Ciaran Blume

    20 NİSAN 2009
  • Videogamerz | Call of Duty

    Videogamerz

    5 NİSAN 2012
  • waterfairy17

    waterfairy17

    9 Aralık 2007