GNU/Linux >> Znalost Linux >  >> Linux

Použití zástupných znaků v Gnu Make Pattern Rule?

Předpokládejme doc.pdf je cíl.

Následující pravidlo spouští regeneraci doc.pdf kdykoli doc.refer je aktualizován, ale je také rád, když doc.refer vůbec neexistuje:

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

Následující pravidlo vzoru však nedosahuje toho samého (PDF se vygeneruje správně, ale při změně doc.refer se nespustí opětovné sestavení ):

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

Mám podezření, že wildcard příkaz se provede před % postava je rozšířena. Jak to mohu obejít?

Přijatá odpověď:

Funkce GNU Make wildcard vezme vzor kulovitých útvarů a rozšíří jej na soubory odpovídající tomuto vzoru. Vzor %.refer neobsahuje žádné kulovité vzory.

Pravděpodobně chcete něco jako

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

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

První cíl bude vyvolán pro vytváření souborů PDF, pokud existuje .mom a .refer soubor dostupný pro základní název dokumentu. Druhý cíl bude vyvolán, pokud neexistuje .refer soubor k dispozici.

Pořadí těchto cílů je důležité.


Linux
  1. Linuxové tipy pro používání GNU Screen

  2. Jak provést změny nastavení specifické pro soubor ve Vimu pomocí Modeline

  3. Shoda víceřádkového vzoru pomocí Sed, Awk nebo Grep?

  1. Udělejte Vim jako své IDE Perl pomocí pluginu perl-support.vim

  2. Udělejte z Vimu své Bash-IDE pomocí pluginu podporující bash

  3. Zvládneš to? Kompilace programů C v systému Linux pomocí příkazu Make

  1. Vytisknout předchozí řádek po shodě vzoru pomocí Sed?

  2. Proveďte https požadavek pomocí socketů na linuxu

  3. Pomocí indexu zrychlit grep?