GNU/Linux >> Tutoriales Linux >  >> Linux

¿Usando comodines en la regla de patrón de creación de Gnu?

Asumir doc.pdf es el objetivo.

La siguiente regla desencadena una regeneración de doc.pdf siempre que doc.refer se actualiza, pero también se alegra cuando doc.refer no existe en absoluto:

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

Sin embargo, la siguiente regla de patrón no logra lo mismo (el PDF se genera correctamente, pero no se activa una reconstrucción al cambiar doc.refer ):

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

Sospecho que el wildcard el comando se ejecuta antes del % el personaje se expande. ¿Cómo puedo solucionar esto?

Respuesta aceptada:

La función GNU Make wildcard toma un patrón global de shell y lo expande a los archivos que coinciden con ese patrón. El patrón %.refer no contiene patrones de englobamiento de conchas.

Probablemente quieras algo como

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

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

El primer objetivo se invocará para crear archivos PDF cuando haya un .mom y un .refer archivo disponible para el nombre base del documento. El segundo objetivo se invocará cuando no haya un .refer archivo disponible.

El orden de estos objetivos es importante.


Linux
  1. Cómo hacer cambios de configuración específicos de archivo en Vim usando Modeline

  2. ¿Coincidencia de patrones multilínea usando Sed, Awk o Grep?

  3. Haga que Vim sea su IDE de Perl usando el complemento perl-support.vim

  4. Haga que Vim sea su Bash-IDE usando el complemento bash-support

  5. ¿Puedes hacerlo? Compile programas C en Linux usando el comando Make

Consejos de Linux para usar GNU Screen

Cómo hacer un servidor CS:GO en Linux VPS

Uso de Curl para realizar solicitudes de API REST

Cómo realizar una búsqueda de patrones en archivos usando Grep

Haz que tu caparazón de pescado sea hermoso con Oh My Fish

Usar sed para reemplazar entre un patrón específico