Am 22.08.2020 um 17:34 schrieb Dietrich Clauss:
> Stefan Reuther wrote:
>> ich baue diverse Programme, wie man das halt so macht: *.c/*.cpp nach
>> *.o compilieren, in *.a einpacken, Binaries draus machen.
>
> Welches Buildsystem? Ich nehme mal an, `make`.
Das tritt mit den verschiedensten Buildsystemen auf. In der Firma mit
CMake, das Makefiles macht. Daheim hab ich mir versehentlich einen
Generator gefrickelt, der Makefiles oder ninja ausspuckt.
>> Kennt da jemand best practices wie man mit sowas umgeht - außer
>> gelegentlich eben alles plattmachen und neu bauen?
>
> Best practice ist da vmtl. wirklich ein `make clean`. Bei ordentlich
> aufgebauten Makefiles reicht ein `make clean` im entsprechenden
> Verzeichnis.
>
> Alternativ kann man im Zuge des Refactoring das betreffende *.o einfach
> mit löschen. Das reicht aber noch nicht. Man muß auch alle
> Folgeprodukte löschen. Das *.a wird sonst gar nicht neu gebaut, denn
> keines der benötigten *.o ist jünger als dieses.
Das Problem mit dem *.a ist gelöst: Kommandozeile zum Bauen des *.a
geändert -> Bauprodukt wird gelöscht und neu erstellt. Ninja macht sowas
intern, in Makefiles geht das mit etwas Gebastel auch.
Das betreffende *.o zu löschen ist nicht so einfach, weil es das
mehrfach gibt: mehrere Build-Workspaces für verschiedene
Konfigurationen, teilweise auch unbeaufsichtigt (CI).
Stefan