GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo podría agregar dir a $PATH en Makefile?

¿Has probado export? directiva de Make en sí (asumiendo que usa GNU Make)?

export PATH := bin:$(PATH)

test all:
    x

Además, hay un error en tu ejemplo:

test all:
    PATH=bin:${PATH}
    @echo $(PATH)
    x

Primero, el valor es echo ed es una expansión de PATH variable realizada por Make, no por el shell. Si imprime el valor esperado, supongo que ha configurado PATH variable en algún lugar anterior de su Makefile, o en un shell que invocó Make. Para evitar tal comportamiento, debe escapar de los dólares:

test all:
    PATH=bin:$$PATH
    @echo $$PATH
    x

En segundo lugar, en cualquier caso, esto no funcionará porque Make ejecuta cada línea de la receta en un shell separado. Esto se puede cambiar escribiendo la receta en una sola línea:

test all:
    export PATH=bin:$$PATH; echo $$PATH; x

Por diseño make el analizador ejecuta líneas en invocaciones de shell separadas, es por eso que cambiar la variable (por ejemplo, PATH ) en una línea, es posible que el cambio no se aplique a las siguientes líneas (consulte esta publicación).

Una forma de solucionar este problema es convertir varios comandos en una sola línea (separados por ; ), o use el objetivo especial de One Shell (.ONESHELL , a partir de GNU Make 3.82).

Alternativamente, puede proporcionar PATH variable en el momento en que se invoca el shell. Por ejemplo:

PATH  := $(PATH):$(PWD)/bin:/my/other/path
SHELL := env PATH=$(PATH) /bin/bash

Lo que suelo hacer es proporcionar la ruta al ejecutable explícitamente:

EXE=./bin/
...
test all:
    $(EXE)x

También uso esta técnica para ejecutar binarios no nativos en un emulador como QEMU si estoy compilando de forma cruzada:

EXE = qemu-mips ./bin/

Si make está usando el shell sh, esto debería funcionar:

test all:
    PATH=bin:$PATH x

Los cambios de ruta parecen ser persistentes si configura primero la variable SHELL en su archivo MAKE:

SHELL := /bin/bash
PATH := bin:$(PATH)

test all:
    x

No sé si este es el comportamiento deseado o no.


Linux
  1. Cómo agregar un directorio a PATH en Linux [con ejemplos]

  2. Cómo agregar un repositorio de Yum

  3. ¿Cómo agregar correctamente una ruta a la ruta?

  4. ¿Cómo hacer `sudo` preservar $ ruta?

  5. ¿Cómo agregar limpiamente a $path?

Cómo agregar un directorio a PATH en Linux

Cómo agregar un directorio a PATH en Linux [Consejo rápido]

Linux:agregar un directorio a PATH

¿Cómo agregar directorios específicos a la ruta de búsqueda actualizada (ubicar)?

Cómo agregar usuarios a Linux a través de un script de shell

ldd no encuentra la ruta, cómo agregar