eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika[OT] Zarządzanie konfiguracją modułów kodu źródłowegoRe: [OT] Zarządzanie konfiguracją modułów kodu źródłowego
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: Sebastian Biały <h...@p...onet.pl>
    Newsgroups: pl.misc.elektronika
    Subject: Re: [OT] Zarządzanie konfiguracją modułów kodu źródłowego
    Date: Sun, 06 May 2012 15:49:54 +0200
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 50
    Message-ID: <jo5vi6$g9s$1@inews.gazeta.pl>
    References: <o...@j...jedi> <jo5tgs$asd$1@inews.gazeta.pl>
    <o...@j...jedi>
    NNTP-Posting-Host: 83.142.222.167
    Mime-Version: 1.0
    Content-Type: text/plain; charset=UTF-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1336312198 16700 83.142.222.167 (6 May 2012 13:49:58 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Sun, 6 May 2012 13:49:58 +0000 (UTC)
    X-User: sebo.bialy
    In-Reply-To: <o...@j...jedi>
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.16)
    Gecko/20101125 Thunderbird/3.0.11
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:630682
    [ ukryj nagłówki ]

    On 2012-05-06 15:30, Andrzej Ekiert wrote:
    > Ale to mi w żaden sposób nie dotyka mojego problemu. Jeśli odwołam się w
    > "../lib/i2c/i2ccore.c" do nowego parametru konfiguracyjnego C_I2C_SHMOO,
    > to muszę go ręcznie zdefiniować w każdym i2cconfiguration.h w każdym
    > projekcie.

    #include "../lib/i2c/defaultconfiguration.h"
    #include "i2cconfiguration.h"

    To powinno zadzialać jak gdyby dziedziczenie parametrów. Możesz też uzyć
    #ifndef FOO, #define FOO DEFAULR_FOO.

    Ewentualnie, znacznie bezpieczniej, #ifndef FOO, #error "FOO not set"

    > Jeśli zmienię nazwę i trochę funkcje parametru C_I2C_FOO na
    > C_I2C_BAR, to znowu zmiana w każdym projekcie. Chodzi mi o sposób lub
    > narzędzie do automatyzacji takich zmian: wykrywanie niedodanych
    > definicji, eliminację przestarzałych definicji, itp.

    Najlepiej, gdybys tego nie robił w ogóle. takie narzędzie jest
    niebezpieczne. Wydaje mi się, że najbezpieczniej jest zdać się na
    kompilator. Czyli raz na jakiś czas budujesz wszystkie swoje żywe
    projekty w całości i poprawiasz tam gdzie padła kompilacja.

    Podobnie do tego pomysłu działa konfigurator opcji kompilacji linuxa
    (kernela). Możesz sobie wyobrazić że tak jest ich dużo i że pojawia się
    niedostrzegana wcześniej warstwa - zależności. W dodatku są ustalane
    ręcznie. Np. sterownik do foobar można kompilowac tylko wtedy gdy jest
    scsi itp. Takie zalezności są cieżkie w utrzymaniu bo nie wynikają
    wprost z kodu tylko z jakieś metawiedzy poza.

    > Samo definiowanie konfiguracji per-projekt i jej #include w plikach
    > biblioteki to mam rozwiązane w miarę elegancko. Boli mnie tylko potrzeba
    > ręcznego czyszczenia konfiguracji per-projekt w wypadku zmian w opcjach
    > oferowanych przez bibliotekę.

    Tego nie unikniesz w przypadku ogólnym. Jesli i2cdriver_init przyjmie 2
    parametry a nie jeden to i tak musisz zmienić *wszystkie* projekty.
    Wielu programistów C wpada tutaj na genialny pomysł uzycia makr albo
    domyslnych parametrów, ale do ślepa uliczka. Tak czy inaczej refaktoring
    bibliteki generuje zmiany po stronie klientów.

    Jesli masz klienta martwego, ale mimo to chcesz utrzymać kompilację, to
    czasami wystarczy kod forkować, czyli #include
    "../lib/i2c/v2/i2ccode.c". Nie jest to eleganckie, ale w przypadku
    embedded pozwala projekt zamrozić. Problemem jest backportowanie poprawek.

    Ten sposob jest uzywany też na linuxie, wystarczy zobaczyć katalog /lib
    żeby zauważyć wiele róznych wersji bibliotek. Głównie dla supportu
    starych klientów.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: