GNU/Linux >> Linux Esercitazione >  >> Linux

Usare il carattere jolly in Gnu Make Pattern Rule?

Assumere doc.pdf è l'obiettivo.

La regola seguente attiva una rigenerazione di doc.pdf ogni volta che doc.refer è aggiornato, ma è anche felice quando doc.refer non esiste affatto:

doc.pdf: doc.mom $(wildcard doc.refer)
    pdfmom -e -k < $< > [email protected]

Tuttavia la seguente regola del modello non ottiene lo stesso risultato (il PDF viene generato correttamente, ma non viene attivata una ricostruzione quando si modifica doc.refer ):

%.pdf: %.mom Makefile $(wildcard %.refer)
    pdfmom -e -k < $< > [email protected]

Sospetto che il wildcard il comando viene eseguito prima del % il carattere è ampliato. Come posso aggirare questo problema?

Risposta accettata:

La funzione GNU Make wildcard prende un pattern di globbing della shell e lo espande ai file che corrispondono a quel pattern. Il modello %.refer non contiene alcun pattern di globbing della shell.

Probabilmente vuoi qualcosa come

%.pdf: %.mom %.refer
        pdfmom -e -k < $< > [email protected]

%.pdf: %.mom
        pdfmom -e -k < $< > [email protected]

Il primo target verrà invocato per creare file PDF quando è presente un .mom e un .refer file disponibile per il nome di base del documento. Il secondo target verrà invocato quando non è presente un .refer file disponibile.

L'ordine di questi obiettivi è importante.


Linux
  1. Corrispondenza di pattern multilinea utilizzando Sed, Awk o Grep?

  2. Stampa la riga precedente dopo una corrispondenza di pattern utilizzando Sed?

  3. Trova solo la prima occasione usando solo Grep?

  4. Utilizzo dell'output dei comandi precedenti in bash

  5. Effettua una richiesta https utilizzando i socket su Linux

Come creare un server CS:GO su VPS Linux

Utilizzo di Curl per effettuare richieste API REST

Come apportare modifiche alle impostazioni specifiche del file in Vim usando Modeline

Come eseguire la ricerca del modello nei file utilizzando Grep

Rendi bello il tuo guscio di pesce usando Oh My Fish

Parallelizza rsync usando GNU Parallel