Как создать скрипт в Makefile? - PullRequest
       18

Как создать скрипт в Makefile?

65 голосов
/ 22 сентября 2011

Есть ли лучший способ получить сценарий, который устанавливает env vars, из make-файла?

FLAG ?= 0
ifeq ($(FLAG),0)
export FLAG=1
/bin/myshell -c '<source scripts here> ; $(MAKE) $@'
else
...targets...
endif

Ответы [ 13 ]

0 голосов
/ 01 сентября 2017
target: output_source
    bash ShellScript_name.sh

попробуйте это сработает, скрипт находится внутри текущей директории.

0 голосов
/ 01 марта 2017

Если вы хотите получить переменные в среде , чтобы они передавались дочерним процессам, вы можете использовать bash's set -a и set +a. Первый означает: «Когда я устанавливаю переменную, тоже устанавливаю соответствующую переменную окружения». Так что это работает для меня:

check:
    bash -c "set -a && source .env.test && set +a && cargo test"

Это передаст все в .env.test в cargo test как переменные окружения.

Обратите внимание, что это позволит вам передавать окружение подкомандам, но не позволит вам устанавливать переменные Makefile (которые в любом случае разные). Если вам нужно последнее, попробуйте одно из других предложений здесь.

0 голосов
/ 07 января 2016

Если вам нужно только несколько известных переменных, экспорт в make-файл может быть опцией, вот пример того, что я использую.

$ grep ID /etc/os-release 

ID=ubuntu
ID_LIKE=debian


$ cat Makefile

default: help rule/setup/lsb

source?=.

help:
        -${MAKE} --version | head -n1

rule/setup/%:
        echo ID=${@F}

rule/setup/lsb: /etc/os-release
        ${source} $< && export ID && ${MAKE} rule/setup/$${ID}


$ make

make --version | head -n1
GNU Make 3.81
. /etc/os-release && export ID && make rule/setup/${ID}
make[1]: Entering directory `/tmp'
echo ID=ubuntu
ID=ubuntu

- http://rzr.online.fr/q/gnumake

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...