Force gnu make per ribuild gli oggetti influenzati dalla definizione del compilatore

Ho un makefile che accetta opzioni sulla riga di comando

make OPTION_1=1 

In base al valore, aggiungerà ulteriori definizioni del compilatore a un sottoinsieme di oggetti.

 ifeq ($(OPTION_1), 1) CC_FLAGS += -DOPTION_1_ON endif 

La modifica della definizione influisce sul contenuto del file di intestazione incluso: uno stub o un’implementazione vengono esposti ai file object.

Come posso ottenere make per ribuild i file ‘interessati’ da questa opzione che cambia?

Io uso un file per ricordare l’ultimo valore di tali opzioni, come questo:

 .PHONY: force compiler_flags: force echo '$(CC_FLAGS)' | cmp -s - [email protected] || echo '$(CC_FLAGS)' > [email protected] 

Il cmp || echo cmp || echo bit significa che il file compiler_flags viene toccato solo quando l’impostazione cambia, quindi ora puoi scrivere qualcosa di simile

 $(OBJECTS): compiler_flags 

causare una ricostruzione di $(OBJECTS) ogni volta che cambiano i flag del compilatore. La regola per compiler_flags verrà eseguita ogni volta che si esegue make, ma una ricostruzione di $(OBJECTS) verrà triggersta solo se il file compiler_flags stato effettivamente modificato.

metterli in un bersaglio quindi chiamare il touch su ogni file.