2014-05-19 28 views

Odpowiedz

2

W wielu przypadkach wszystko może być OK, jeśli nie uruchomisz make clean, ale nie możesz zakładać, że tak będzie.

Przykład tego, co może pójść nie tak: flaga configure może dodać parametr -D do zmiennej CFLAGS lub DEFS, zamiast definiować ją przez config.h. Ta ostatnia dałaby twoim plikom C zależność od config.h, która z kolei zostanie zregenerowana po ponownym uruchomieniu configure. Ale w pierwszym przypadku, jeśli ponownie uruchomisz configure i zmienisz tę flagę, zestaw symboli #defined w twoich plikach C będzie różny, ale te pliki C nie zostaną ponownie skompilowane.

1

configure Skrypty są zaprojektowane do uruchamiania "poza drzewem". np. możesz utworzyć podkatalog build i uruchomić tam stamtąd, co (idealnie) wpłynie tylko na katalog build.

Jeśli używasz ./configure, przed uruchomieniem configure musisz ponownie uruchomić make clean - po prostu dla bezpieczeństwa. W przeciwnym razie, jeśli obawiasz się skutków ubocznych, poprawnie napisany pakiet autotools powinien umożliwić katalog budowania poza drzewem.

+0

W jaki sposób mógłby pomóc katalog budowania poza drzewem, jeśli go nie usunę i po prostu ponownie uruchomię './Configure'? Co by było inaczej? W przeciwnym razie jest to dodatkowy krok, tak samo jak uruchomienie 'make clean'. – sashoalm

+0

@sashoalm - uruchamianie 'make clean' lub' make distclean' jest jakoś czasochłonnym "wąskim gardłem" w rozwoju twojego projektu? Autotools są na tyle złożone, że nie wymagają "sprytnych" skrótów, które mogą być cokolwiek innego. –