Comprendi crea e sarà il tuo migliore amico.
Make è una specie di sistema di flusso di dati . In un sistema di flusso di dati, l'applicazione viene creata dai componenti, collegando le porte di input e di output, dove inviano messaggi (pacchetti di dati o, a volte, solo trigger), quindi formano una rete di elaborazione. Vedi Wikipedia programmazione del flusso di dati e programmazione basata sul flusso articoli.
Nel caso di make, i componenti sono le unità di compilazione, i messaggi sono cambiamenti di file (origine, oggetto, altra risorsa). Quando un file cambia, attiva un componente (un nodo di compilazione), quindi il componente, dopo aver eseguito il suo compito, producendo output e attivando altri componenti, che stanno facendo lo stesso modo, fino a quando la catena di messaggi raggiunge il componente finale (sink), che produce a.out.
Di fronte ad altre architetture di dataflow, make non funziona continuamente. devi avviarlo, quando senti che un file è cambiato e attiverà un componente. Se esegui make quando non ci sono file modificati, quindi nessun componente verrà attivato, dice un messaggio "niente da fare" e si interrompe.
Se ci sono percorsi paralleli nella rete di flusso di dati, make può eseguire i componenti parallelamente, provare l'opzione make -j
. (È un effetto interessante che lo stesso G ++ non utilizzi più processori, ma lo fa con l'aiuto di make.)
Creare un buon makefile non è banale, ma se pensi di fare come un costruttore di applicazioni per il flusso di dati, può essere uno strumento molto efficace.